QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#750150#7904. Rainbow SubarrayWedonotLikeStudying#WA 126ms6232kbC++201.5kb2024-11-15 13:04:562024-11-15 13:04:57

Judging History

你现在查看的是最新测评结果

  • [2024-11-15 13:04:57]
  • 评测
  • 测评结果:WA
  • 用时:126ms
  • 内存:6232kb
  • [2024-11-15 13:04:56]
  • 提交

answer

#include<bits/stdc++.h>
#define rep(i,j,k) for (int i=(j);i<=(k);++i)
#define dep(i,j,k) for (int i=(j);i>=(k);--i)
#define MAXN 100000
using namespace std;
typedef long long LL;

multiset<int> dwn,up;
LL sumup,sumdwn;
int a[MAXN+5];

void flat() {
    if (up.size()>dwn.size()+1) {
        auto it=up.begin();
        sumup-=*it;
        sumdwn+=*it;
        dwn.insert(*it);
        up.erase(it);
    } else if (up.size()<dwn.size()) {
        auto it=--dwn.end();
        sumdwn-=*it;
        sumup+=*it;
        up.insert(*it);
        dwn.erase(it);
    }
}

void add(int x) {
    if (up.empty()||x>=*up.begin()) {
        up.insert(x);
        sumup+=x;
    } else {
        dwn.insert(x);
        sumdwn+=x;
    }
    flat();
}

void del(int x) {
    if (!up.empty()&&x>=*up.begin()) {
        up.erase(x);
        sumup-=x;
    } else {
        dwn.erase(x);
        sumdwn-=x;
    }
    flat();
}

LL k;
inline bool check() {
    return k>=sumup-(*up.begin())*up.size()+(*up.begin())*dwn.size()-sumdwn;
}

void solve() {
    int n;
    cin>>n>>k;
    sumup=sumdwn=0;
    up.clear(),dwn.clear();
    rep(i,1,n) cin>>a[i];
    rep(i,1,n) a[i]-=i;
    int l=1,ans=1;
    rep(r,1,n) {
        add(a[r]);
        while (l<r&&!check()) del(a[l++]);
        ans=max(ans,r-l+1);
    }
    cout<<ans<<"\n";
}

int main() {
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t;
    cin>>t;
    while (t--) solve();
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3596kb

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: 126ms
memory: 6232kb

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
2
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
3
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
2
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 11002nd lines differ - expected: '517', found: '515'