Submission #721816

#TimeUsernameProblemLanguageResultExecution timeMemory
721816Darren0724Street Lamps (APIO19_street_lamps)C++17
20 / 100
973 ms45084 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define all(x) x.begin(),x.end() const int INF=1e18; struct seg{ seg *lc,*rc; int l,r,m; int mx=INF; seg(int l1,int r1){ l=l1,r=r1; m=(l+r)>>1; if(r-l==1){ return; } lc=new seg(l,m); rc=new seg(m,r); } void add(int p,int x){ if(r-l==1){ mx=x; return; } if(p<m){ lc->add(p,x); } else{ rc->add(p,x); } mx=max(lc->mx,rc->mx); } int ask(int a,int b){ if(a<=l&&b>=r){ //cout<<mx<<endl; return mx; } int ans=-INF; if(a<m){ ans=max(ans,lc->ask(a,b)); } if(b>m){ ans=max(ans,rc->ask(a,b)); } return ans; } }; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n,q;cin>>n>>q; vector<int> a(n); seg *tr=new seg(0,n); for(int i=0;i<n;i++){ char c;cin>>c; a[i]=c-'0'-1; if(a[i]==0){ tr->add(i,0); } } vector<int> ans(n); for(int i=1;i<=q;i++){ string s;cin>>s; if(s=="query"){ int x,y;cin>>x>>y;x--;y--; int p=tr->ask(x,y); //cout<<p<<endl; p=min(p,i); cout<<i-p<<endl; } else{ int p;cin>>p;p--; tr->add(p,i); } } 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...