QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#544501#7904. Rainbow SubarrayNew_FolderWA 113ms5752kbC++141.8kb2024-09-02 17:37:042024-09-02 17:37:04

Judging History

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

  • [2024-09-02 17:37:04]
  • 评测
  • 测评结果:WA
  • 用时:113ms
  • 内存:5752kb
  • [2024-09-02 17:37:04]
  • 提交

answer

#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define int long long
//#define pi 3.1415926
typedef long long ll;
using namespace std;
int mod=998244353;

int fp(int a,int b){
	int ans=1;
	while(b){
		if(b&1) ans*=a,ans%=mod;
		a*=a,a%=mod;
		b>>=1;
	}
	return ans;
}

void solve(){
	int n,k,ans=0;cin>>n>>k;
	vector<int> vec(n+1);
	for(int i=1;i<=n;i++) cin>>vec[i],vec[i]-=i,vec[i]+=2000000000;
	int p1=1,p2=1,suml=0,sums=0,mid=vec[1],sizes=0,sizel=0;
	multiset<int,greater<int>> ss;multiset<int> ls;
	while(p2<=n){
		if(p1>p2) cout<<"hhh";
		if(abs(suml-sizel*mid)+abs(sizes*mid-sums)<=k){
			ans=max(p2-p1+1,ans);
			p2++;
			if(p2>n) break;
			if(vec[p2]<mid) ss.insert(vec[p2]),sizes++,sums+=vec[p2];
			else if(vec[p2]>=mid) ls.insert(vec[p2]),sizel++,suml+=vec[p2];
			if(sizel>=sizes+2) sums+=mid,suml-=*ls.begin(),ss.insert(mid),mid=*ls.begin(),ls.erase(ls.begin()),sizel--,sizes++;
			else if(sizes>=sizel+2) suml+=mid,sums-=*ss.begin(),ls.insert(mid),mid=*ss.begin(),ss.erase(ss.begin()),sizel++,sizes--;
		}
		else{
			bool sp=0;
			if(vec[p1]<mid) ss.erase(vec[p1]),sizes--,sums-=vec[p1];
			else if(vec[p1]>mid) ls.erase(vec[p1]),sizel--,suml-=vec[p1];
			else sp=1;
			p1++;
			if(sp){
				if(sizes>sizel) mid=*ss.begin(),ss.erase(ss.begin()),sizes--,sums-=mid;
				else mid=*ls.begin(),ls.erase(ls.begin()),sizel--,suml-=mid;
			}
			if(sizel>=sizes+2) sums+=mid,suml-=*ls.begin(),ss.insert(mid),mid=*ls.begin(),ls.erase(ls.begin()),sizel--,sizes++;
			else if(sizes>=sizel+2) suml+=mid,sums-=*ss.begin(),ls.insert(mid),mid=*ss.begin(),ss.erase(ss.begin()),sizel++,sizes--;
		}
	}
	cout<<ans<<"\n";
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 113ms
memory: 5752kb

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 11101st lines differ - expected: '40384', found: '46556'