QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#315254#7904. Rainbow SubarrayHqwqWA 127ms6128kbC++141.3kb2024-01-27 09:45:352024-01-27 09:45:35

Judging History

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

  • [2024-06-09 00:00:26]
  • hack成功,自动添加数据
  • (/hack/652)
  • [2024-01-27 09:45:35]
  • 评测
  • 测评结果:WA
  • 用时:127ms
  • 内存:6128kb
  • [2024-01-27 09:45:35]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

int n,k,a[500010],l,r,len1,len2;
multiset<int>s1,s2;

void balance(){
	int x;
	while(s1.size()>s2.size()+1){
		x=*s1.rbegin();
		s1.erase(prev(s1.end()));
		s2.insert(x);
		len1-=x;
		len2+=x;
	}
	while(s1.size()<s2.size()){
		x=*s2.begin();
		s1.insert(x);
		s2.erase(s2.begin());
		len1+=x;
		len2-=x;
	}
}

int find(){
	int x=*s1.rbegin();
	int y=*s2.begin();
	if (x*s1.size()-len1+len2-x*s2.size()>k && y*s1.size()-len1+len2-y*s2.size()>k){
		if (*s1.rbegin()>=a[l]) {
			s1.erase(s1.find(a[l]));
			len1-=a[l];
			balance();
		}
		else {
			s2.erase(s2.find(a[l]));
			len2-=a[l];
			balance();
		}
		l++;
		return find();
	}
	return r-l+1;
}

int main(){
	int tt;
	scanf("%d",&tt);
	while(tt--){
		s1.clear();
		s2.clear();
		scanf("%d %d",&n,&k);
		for (int i=1;i<=n;i++){
			scanf("%d",&a[i]);
			a[i]-=i;
		}
//		for (int i=1;i<=n;i++) cout<<a[i]<<' ';
//		cout<<'\n';
		int ans=0;
		l=1;r=0;
		len1=len2=0;
		for (int i=1;i<=n;i++){
			if (s1.empty() || *s1.rbegin()>=a[i]) {
				s1.insert(a[i]);
				len1+=a[i];	
				balance();
			}
			else {
				s2.insert(a[i]);
				len2+=a[i];
				balance();	
			}
			r++;
			ans=max(ans,find());
			//cout<<ans<<' ';
		}
		printf("%d\n",ans);
	}
	return 0;
} 

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3924kb

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: 127ms
memory: 6128kb

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 5040th lines differ - expected: '6', found: '5'