제출 #900158

#제출 시각아이디문제언어결과실행 시간메모리
900158Abdalaziz_AlshamiGrowing Trees (BOI11_grow)C++17
30 / 100
237 ms1860 KiB
#include<iostream>
#include<algorithm>
#define int int64_t
using namespace std;
const int N=7e3+7;
int a[N],n,q;
void order(int c,int h)
{
	int d=c,s=0,x=-1,p=1e18;
	for(int i=0;i<n&&d;i++)
	{
		if(a[i]>=h)
		{
			if(p==1e18) p=i;
			if(i==0) s=1,x=a[i];
			else if(a[i]!=a[i-1]) s=1,x=a[i];
			else s++;
			d--;
		}
	}
	d=c;
	for(int i=n-1;i>=0&&i>=p;i--)
	{
		if(a[i]==x&&s) a[i]++,s--,d--;
		else if(a[i]!=x&&d<c) a[i]++,d--;
	}
}
signed main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin>>n>>q;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n);
	while(q--)
	{
		char ty; cin>>ty;
		if(ty=='F')
		{
			int c,h; cin>>c>>h;
			order(c,h);
		}
		else{
			int mn,mx; cin>>mn>>mx;
			int p1=lower_bound(a,a+n,mn)-a;
			int p2=upper_bound(a,a+n,mx)-a;
			cout<<p2-p1<<endl;
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...