QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#740395#7904. Rainbow SubarrayHHSRE 0ms3596kbC++141.0kb2024-11-13 09:40:392024-11-13 09:40:50

Judging History

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

  • [2024-11-13 09:40:50]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:3596kb
  • [2024-11-13 09:40:39]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t;

void solve(){
	ll n,k;
	cin>>n>>k;
	vector<ll>a(n+10);
	for(ll i=1;i<=n;i++)
		cin>>a[i],a[i]-=i;
	ll ans=1,len=1,l=1,r=1;
	multiset<ll>s1,s2;
	s2.insert(a[1]);
	ll sum1=0;
	ll sum2=a[1];
	while(l<=n)
	{
		ll mid=*s2.begin();
		ll res=mid*s1.size()-sum1+sum2-mid*s2.size();
		if(res<=k)
		{
			ll si=s1.size()+s2.size();
			ans=max(ans,si);
			l++;
			s2.insert(a[l]);
			sum2+=a[l];
			if(s2.size()>s1.size()+1)
			{
				ll ss=*s2.begin();
				s1.insert(*s2.begin());
				s2.erase(*s2.begin());
				sum2-=ss;
				sum1+=ss;
			}
		}
		else{
			if(a[r]>=*s2.begin())
			{
				s2.erase(a[r]);
				r++;
				sum2-=a[r];
			}
			else{
				s1.erase(a[r]);
				r++;
				sum1-=a[r];
			}
			if(s2.size()>s1.size()+1)
			{
				ll ss=*s2.begin();
				s1.insert(*s2.begin());
				s2.erase(*s2.begin());
				sum2-=ss;
				sum1+=ss;
			}
		}
	}
	cout<<ans<<endl;
}

int main()
{
	cin>>t;
	while(t--)
	{
		solve();
	}
}

详细

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
Runtime Error

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

result: