Submission #568023

#TimeUsernameProblemLanguageResultExecution timeMemory
568023josanneo22Street Lamps (APIO19_street_lamps)C++17
0 / 100
153 ms22140 KiB
#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
#include<stdlib.h>
 
using namespace std;
 
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pair<int, int> > vpii;
typedef pair<ll,ll> pll;
typedef vector<ll> vll;
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b); i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)
 
#define mp make_pair
#define pb push_back
#define rsz resize
#define sz(x) int(x.size())
#define all(x) begin(x), end(x)
#define f first
#define s second
#define out(x) cout<<x<<'\n';
#define in(x) cin>>x;
#define inarr(a,x,y) for(int i=x;i<y;i++){cin>>a[i];}
#define incor(a,x,y) for(int i=x;i<y;i++){cin>>a[i].f>>a[i].s;}
int dx[4] = { -1, 0, 1, 0 };
int dy[4] = { 0, 1, 0, -1 };
const int mod = 1e9 + 7;
void normal()
{
    ios_base::sync_with_stdio(false);  cin.tie(NULL);
}
char change(char x)
{
	if(x=='0') return '1';
	return '0';
}
const int maxn= 3e5+3;
vpii tim[maxn];
string ori;
void solve()
{
	int n,q;
	cin>>n>>q;
	
	cin>>ori;
	FOR(i,0,n)
        tim[i].pb(mp(ori[i],0));
    FOR(i,0,q)
    {
        string x;cin>>x;
        if(x=="query")
        {
            int a,b;
            cin>>a>>b;
            a--;b--;
            pii temp=tim[a][sz(tim[a])-1];
            ll ans=0;
            if(temp.f=='0')
            {
                for(int j=sz(tim[a])-1;j>=0;j--)
                {
                    ans+=tim[a][j].s;
                }
            }
            else
            {
                ans+=(i=+tim[a][sz(tim[a])-1].s);
                for(int j=sz(tim[a])-2;j>=0;j--)
                {
                    ans+=tim[a][j].s;
                }
            }
            out(ans);
        }
        else
        {
            int x;
            in(x);
            x--;
            if(change(ori[x])=='1')
                tim[x].pb(mp(1,(ll)-i));
            else tim[x].pb(mp(0,(ll)i));
            ori[x]=change(ori[x]);
        }
        
    }
}
int main()
{
	normal();
	int t=1;
	while(t--)
	{
		solve();
	}
	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...