Submission #1314400

#TimeUsernameProblemLanguageResultExecution timeMemory
1314400boclobanchatElection (BOI18_election)C++20
0 / 100
1 ms568 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN=5e5+5; int pref[MAXN],suff[MAXN],spref[MAXN][20],ssuff[MAXN][20]; int getlog(long long n) { return 63-__builtin_clzll(n); } int rmqpref(int l,int r) { int lg=getlog(r-l+1); return min(spref[l][lg],spref[r-(1<<lg)+1][lg]); } int rmqsuff(int l,int r) { int lg=getlog(r-l+1); return min(ssuff[l][lg],ssuff[r-(1<<lg)+1][lg]); } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,q; string s; cin>>n>>s>>q; s=' '+s; for(int i=1;i<=n;i++) spref[i][0]=(pref[i]=pref[i-1]+(s[i]=='C')-(s[i]=='T')); for(int i=n;i;i--) ssuff[i][0]=(suff[i]=suff[i+1]+(s[i]=='C')-(s[i]=='T')); for(int j=1;(1<<j)<=n;j++) for(int i=1;i<=n-(1<<j)+1;i++) { spref[i][j]=min(spref[i][j-1],spref[i+(1<<(j-1))][j-1]); ssuff[i][j]=min(ssuff[i][j-1],ssuff[i+(1<<(j-1))][j-1]); } while(q--) { int l,r; cin>>l>>r; cout<<max(0,max(pref[l-1]-rmqpref(l,r),suff[r+1]-rmqsuff(l,r)))<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...