Submission #595544

#TimeUsernameProblemLanguageResultExecution timeMemory
595544UncoolAnon케이크 (CEOI14_cake)C++14
46.67 / 100
2078 ms14556 KiB
#include <bits/stdc++.h> 

#define pii pair<int,int> 
#define F first 
#define S second 
#define mp make_pair 

using namespace std; 
int n,si; 
set<pii> order; 
vector<int> a; 
int query(int t){
	int l=si,r=si;
	while(t<l||t>r){
		if(l==0) ++r;
		else if(r==n-1) --l; 
		else if(a[l-1]<a[r+1]) --l; 
		else ++r; 
	}
	return r-l; 
}
void update(int i,int e){
	order.erase(mp(-a[i],i)); 
	vector<int> hold; 
	int mn=-(order.begin()->first)+1; 
	while(e--!=1){
		hold.push_back(order.begin()->second); 
		order.erase(order.begin()); 
	}
	for(int&x:hold){
		++a[x];
		mn=min(mn,a[x]-1); 
		order.insert(mp(-a[x],x)); 
	}
	order.insert(mp(-mn,i)); 
	a[i]=mn; 
	return ; 
}
int main(){
	ios_base::sync_with_stdio(0); 
	cin.tie(nullptr); 
	cin>>n>>si; --si; a.resize(n); 
	for(int i=0;i<n;++i){
		cin>>a[i];
		order.insert(mp(-a[i],i)); 
	}
	int q; 
	cin>>q; 
	while(q--){
		char x;
		cin>>x ;
		if(x=='F'){
			int y; 
			cin>>y; --y;
			cout<<query(y)<<'\n'; 
		}
		else{
			int i,e; 
			cin>>i>>e; --i; 
			update(i,e); 
		}
	}
	return 0; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...