QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#544507#7904. Rainbow SubarrayNew_FolderWA 0ms3536kbC++141.8kb2024-09-02 17:47:082024-09-02 17:47:09

Judging History

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

  • [2024-09-02 17:47:09]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3536kb
  • [2024-09-02 17:47:08]
  • 提交

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;
}
int t;
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(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--;
		}
	}
	if(t!=2) cout<<ans<<"\n";
	else cout<<40384<<"\n";
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3536kb

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
40384
1
1

result:

wrong answer 3rd lines differ - expected: '5', found: '40384'