Submission #713605

#TimeUsernameProblemLanguageResultExecution timeMemory
713605bin9638Street Lamps (APIO19_street_lamps)C++17
20 / 100
1329 ms141988 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define N 300010 #define ii pair<int,int> #define fs first #define sc second #define ld double int n,q,a[N]; struct PIT { int goc[N]={},dem=0; void init() { goc[0]=1; dem=1; } struct node { int l_child=0,r_child=0,sum=0; }ST[N*42]; int update(int l,int r,int i,int val,int oldId) { if(l>i||r<i) return oldId; if(l==r) { dem++; ST[dem].sum=val; return dem; } int mid=(l+r)/2,cur=++dem; ST[cur].l_child=update(l,mid,i,val,ST[oldId].l_child); ST[cur].r_child=update(mid+1,r,i,val,ST[oldId].r_child); ST[cur].sum=(ST[ST[cur].l_child].sum+ST[ST[cur].r_child].sum); return cur; } int get(int id,int l,int r,int u,int v) { if(l>v||r<u) return 0; if(l>=u&&r<=v) return ST[id].sum; int mid=(l+r)/2; return get(ST[id].l_child,l,mid,u,v)+get(ST[id].r_child,mid+1,r,u,v); } }T; int main() { #ifdef SKY freopen("A.inp","r",stdin); freopen("A.out","w",stdout); #endif // SKY ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin>>n>>q; for(int i=1;i<=n;i++) { char ch; cin>>ch; a[i]=ch-'0'; } T.init(); for(int i=1;i<=n;i++) T.goc[0]=T.update(1,n,i,a[i],T.goc[0]); for(int t=1;t<=q;t++) { string type; cin>>type; if(type=="toggle") { int vt; cin>>vt; T.goc[t]=T.update(1,n,vt,1,T.goc[t-1]); }else { T.goc[t]=T.goc[t-1]; int l=0,r=t-1,res=t,u,v; cin>>u>>v; v--; while(l<=r) { int mid=(l+r)/2; if(T.get(T.goc[mid],1,n,u,v)==v-u+1) { res=mid; r=mid-1; }else l=mid+1; } cout<<t-res<<"\n"; } } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...