Submission #1338834

#TimeUsernameProblemLanguageResultExecution timeMemory
1338834AlphaBruhUiro (JOI25_uiro)C++20
0 / 100
5091 ms1688 KiB
#include<bits/stdc++.h>
using namespace std;
int n,q;
int a[200005],l,r;
priority_queue<int>pq;
void rexp(){
	while(pq.size()) pq.pop();
	int sum=0,ans=0;
	for(int i=l;i<=r;i++){
		if(sum>=a[i]){
			ans++;
			pq.push(a[i]);
			sum-=a[i];
			continue;
		}
		sum+=a[i];
		if(pq.empty()) continue;
		if(pq.top()>a[i]){
			sum+=((pq.top()-a[i])<<1);
			pq.pop();
			pq.push(a[i]);
		}
	}
	cout<<ans<<"\n";
}
void lexp(){
	while(pq.size()) pq.pop();
	int sum=0,ans=0;
	for(int i=r;i>=l;i--){
		sum+=a[i];
		while(pq.size()){
			if(pq.top()*2+sum>=0){
				ans++;
				sum+=pq.top()*2;
				pq.pop();
			}else break;
		}
		pq.push(-a[i]);
	}
	cout<<ans<<"\n";
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>q;
	while(q--){
		cin>>l>>r;
		lexp();
	}
}
#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...