QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#688162 | #7904. Rainbow Subarray | AAAAAZBX | WA | 186ms | 6480kb | C++20 | 2.5kb | 2024-10-29 23:59:07 | 2024-10-29 23:59:08 |
Judging History
answer
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<set>
#include<queue>
#define x first
#define y second
using namespace std;
const double PI = acos(-1);
const int N = 5e5 + 10;
typedef long long ll;
typedef pair<ll, ll> PII;
int n;
ll a[N], k;
struct MID {
multiset<ll, greater<ll>>p;//存储较小部分,begin为最大值
multiset<ll>q;//存储较大部分,begin为最小值
ll sump, sumq;
MID() {
sump = sumq = 0;
}
void move() {
if (abs((int)p.size() - (int)q.size()) > 1) {
if (p.size() > q.size()) {
auto t = *p.begin();
p.extract(t), q.insert(t);
sump -= t, sumq += t;
}
else {
auto t = *q.begin();
q.extract(t), p.insert(t);
sumq -= t, sump += t;
}
}
}
void add(ll x) {
if (!p.size() || x <= *p.begin()) {
p.insert(x);
sump += x;
}
else {
q.insert(x);
sumq += x;
}
move();
}
void del(ll x) {
if (p.count(x)) {
p.extract(x);
sump -= x;
}
else {
q.extract(x);
sumq -= x;
}
move();
}
ll get() {
ll mid = 0;
if (p.size() && p.size() >= q.size())mid = *p.begin();
else if (q.size())mid = *q.begin();
return mid * p.size() - sump + sumq - mid * q.size();
}
ll getmid() {
ll mid = 0;
if (p.size() && p.size() >= q.size())mid = *p.begin();
else if (q.size())mid = *q.begin();
return mid;
}
int size() {
return p.size() + q.size();
}
};
int main() {
int _ = 1;
scanf("%d", &_);
while (_--) {
scanf("%d%lld", &n, &k);
for (int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
a[i] -= i;
}
//for (int i = 1; i <= n; i++)cout << a[i] << " ";
//cout << '\n';
MID s;
int ans = 1;
for (int r = 0, l = 1; l <= n; l++) {
while (r < n) {
s.add(a[++r]);
if (s.get() > k) {
s.del(a[r--]);
break;
}
}
ans = max(ans, r - l + 1);
s.del(a[l]);
}
printf("%d\n", ans);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3888kb
input:
5 7 5 7 2 5 5 4 11 7 6 0 100 3 4 5 99 100 5 6 1 1 1 1 1 5 50 100 200 300 400 500 1 100 3
output:
4 3 5 1 1
result:
ok 5 lines
Test #2:
score: -100
Wrong Answer
time: 186ms
memory: 6480kb
input:
11102 2 167959139 336470888 134074578 5 642802746 273386884 79721198 396628655 3722503 471207868 6 202647942 268792718 46761498 443917727 16843338 125908043 191952768 2 717268783 150414369 193319712 6 519096230 356168102 262263554 174936674 407246545 274667941 279198849 9 527268921 421436316 3613460...
output:
1 4 3 2 6 5 7 2 4 1 4 1 1 3 2 4 7 8 7 7 1 7 6 2 4 3 1 6 7 7 3 4 3 9 3 8 6 6 3 1 6 4 1 2 4 6 4 6 4 1 4 7 1 6 3 5 6 6 1 7 5 3 1 6 4 5 3 3 2 6 2 3 10 1 4 3 2 4 5 1 7 5 5 5 8 5 3 6 3 5 5 8 5 4 5 2 1 5 2 3 3 4 8 1 3 1 2 2 8 3 1 6 8 1 8 4 5 6 6 8 4 8 3 2 8 4 5 6 2 6 2 4 1 5 4 5 3 2 4 1 2 1 4 5 8 3 7 3 3 3...
result:
wrong answer 16th lines differ - expected: '2', found: '4'