Submission #1360101

#TimeUsernameProblemLanguageResultExecution timeMemory
1360101Faisal_Saqib가로등 (APIO19_street_lamps)C++20
20 / 100
195 ms11252 KiB
#include <iostream>
using namespace std;
const int N=3e5+10;
int s[N],og[N],lst[N],sz[N];
int sm[N][3];
int seg[N<<2],n;
void set(int x,int v)
{
    for(seg[x+=n]=v;x>1;x/=2)
    {
        seg[x>>1]=max(seg[x],seg[x^1]);
    }
}
int qry(int l,int r)
{
    int ans=0;
    for(l+=n,r+=n;l<r;l/=2,r/=2)
    {
        if(l&1)ans=max(ans,seg[l++]);
        if(r&1)ans=max(ans,seg[--r]);
    }
    return ans;
}
void solve()
{
    int q;
    cin>>n>>q;
    for(int i=0;i<n;i++)
    {
        char c;
        cin>>c;
        og[i]=c-'0';
        lst[i]=0;
        if(og[i])
          set(i,0);
        else
          set(i,q+2);
        sz[i]=0;
        s[i]=c-'0';
    }
    for(int i=1;i<=q;i++)
    {
        string cs;
        cin>>cs;
        if(cs[0]=='t')
        {
            int k;
            cin>>k;
            
            k--;

            sm[k][sz[k]%2]+=(i-lst[k]);
            sz[k]++;
            s[k]^=1;

            if(s[k])set(k,i);
        }
        else
        {
            int a,b;
            cin>>a>>b;
            a--;
            b--;
            cout<<max(0,i-qry(a,b))<<endl;;
        }
    }
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--)solve();
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...