Submission #1267319

#TimeUsernameProblemLanguageResultExecution timeMemory
1267319akmuhammet_sElection (BOI18_election)C++20
0 / 100
1 ms320 KiB
#include "bits/stdc++.h"
using namespace std;
#define mod 998244353
#define ll long long
#define N 24
#define maxn 200005

void solve(){
	int n;
	cin>>n;
	string s;
	cin>>s;
	int sq=sqrt(n);
	int pref[n+5],prefg[n+5];
	int cur=0,x=1e9;
	for(int i=0; i<s.size(); i++){
		if(s[i]=='C') cur++;
		else cur--;
		x=min(x,cur);
		pref[i]=cur;
		if(i%sq==(sq-1)){
			prefg[i/sq]=x;
			x=1e9;
		}
	}
	cur=0;
	x=1e9;
	int suf[n+5],sufg[n+5];
	for(int i=s.size()-1; i>=0; i--){
		if(s[i]=='C') cur++;
		else cur--;
		x=min(x,cur);
		suf[i]=cur;
		if(i%sq==0){
			sufg[i/sq]=x;
			x=1e9;
		}
	}
	int q;
	cin>>q;
	while(q--){
		int l,r;
		cin>>l>>r;
		int mn=1e9;
		for(int i=l-1; i<r; i++){
			if(i%sq==0 and i+sq<=r){
				mn=min(mn,prefg[i/sq]);
				i=i+sq-1;
				continue;
			}
			mn=min(mn,pref[i]);
		}
		if(l>1){
			mn-=pref[l-2];
		}
		int ans=mn;
		mn=1e9;
		for(int i=l-1; i<r; i++){
			if(i%sq==0 and i+sq<=r){
				mn=min(mn,sufg[i/sq]);
				i=i+sq-1;
				continue;
			}
			mn=min(mn,suf[i]);
		}
		if(r<n){
			mn-=suf[r];
		}
		ans=min(ans,mn);
		cout<<abs(min(ans,0))<<'\n';
	}
}
 
int main(){ 	
	// freopen("in.txt","w",stdout);
	// freopen("out.txt","r",stdin);
	ios_base::sync_with_stdio(0); cin.tie(0);
	ll t=1;
	// cin>>t;
	while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...