This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |