Submission #655089

#TimeUsernameProblemLanguageResultExecution timeMemory
655089DeMen100nsStreet Lamps (APIO19_street_lamps)C++17
0 / 100
242 ms3708 KiB
/*
Author : DeMen100ns (a.k.a Vo Khac Trieu)
School : VNU-HCM High school for the Gifted
fuck you adhoc
*/

#include <bits/stdc++.h>

using namespace std;

const int N = 3e5 + 5;
const long long INF = 1e18 + 7;
const int MAXA = 1e9;
const int B = sqrt(N) + 5;

int n, q;
string s;

int seg[4 * N];

void upd(int id, int l, int r, int pos){
    if (l == r){
        seg[id] ^= 1;
        return;
    }

    int mid = (l + r) >> 1;
    if (pos <= mid) upd(id << 1, l, mid, pos);
    else upd(id << 1 | 1, mid + 1, r, pos);
    
    seg[id] = seg[id << 1] + seg[id << 1 | 1];
}

void subtask2(){
    for(int i = 0; i < n; ++i){
        if (s[i] == '1') upd(1, 0, n - 1, i);
    }

    int cnt = (seg[1] == n);

    for(int i = 1; i <= q; ++i){
        string type;
        cin >> type;
        if (type == "query") {
            int l, r; cin >> l >> r;

            cout << cnt << endl;
        }
        else {
            int p; cin >> p;
            upd(1, 0, n - 1, p - 1);

            cnt += (seg[1] == n);
        }
    }
    
}

void solve()
{
    cin >> n >> q;
    cin >> s;
    
    subtask2();
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    // freopen("codeforces.inp","r",stdin);
    // freopen("codeforces.out","w",stdout);

    int t = 1; // cin >> t;
    while (t--)
    {
        solve();
    }
}
#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...