Submission #1360227

#TimeUsernameProblemLanguageResultExecution timeMemory
1360227Muhammad_AneeqStreet Lamps (APIO19_street_lamps)C++20
20 / 100
215 ms54300 KiB
#include <bits/stdc++.h>
using namespace std;
int const N=3e5+10,LG=20;
int mx[N][LG]={};
int get(int l,int r)
{
	int lg=log2(r-l+1);
	return max(mx[l][lg],mx[r-(1<<lg)+1][lg]);
}
inline void solve()
{
    int n,q;
    cin>>n>>q;
    string s;
    cin>>s;
    // vector<int>ind[n]={};
    int val[n]={};
    int ind[n]={};
    for (int i=0;i<n;i++)
    {
    	ind[i]=1e9+10;
        if (s[i]=='1')
        {
            // ind[i].push_back(0);
            val[i]=0;
            ind[i]=0;
        }
    }
    vector<pair<string,vector<int>>>qu;
    qu.push_back({"s",{1}});
    for (int i=1;i<=q;i++)
    {
    	string s;
    	cin>>s;
    	if (s[0]=='t')
    	{
    		int x;
    		cin>>x;
    		ind[x-1]=i;
    		qu.push_back({s,{x}});
    	}
    	else
    	{
    		int x,t;
    		cin>>x>>t;
    		qu.push_back({s,{x,t}});
    	}
    }
    for (int i=0;i<n;i++)
    {
    	// cout<<ind[i]<<' ';
    	mx[i][0]=ind[i];
    }
    // cout<<endl;
    for (int j=1;(1<<j)<=n;j++)
    {
    	for (int i=0;i+(1<<j)-1<n;i++)
    	{
    		mx[i][j]=max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]);
    	}
    }
    // cout<<mx[0][2]<<endl;
    // cout<<get(0,4)<<endl;
    for (int i=1;i<=q;i++)
    {
        string s;
        // cin>>s;
        s=qu[i].first;
        if (s[0]=='q')
        {
            int a,b;
            a=qu[i].second[0],b=qu[i].second[1];
            // cin>>a>>b;
            a--;b--;
         	int f=get(a,b-1);
            // cout<<a<<' '<<b<<' '<<f<<endl;
         	cout<<max(0,i-f)<<endl;   
        }
    }
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    // cin>>t;
    for (int i=1;i<=t;i++)
    {
        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...