Submission #403171

#TimeUsernameProblemLanguageResultExecution timeMemory
403171AmineTrabelsiStreet Lamps (APIO19_street_lamps)C++14
20 / 100
5060 ms524292 KiB
#include <bits/stdc++.h>
using namespace std;
// Hi

int main(){
    //ios::sync_with_stdio(0);cin.tie(0);
    int n,q;
    cin>>n>>q;
    string s;
    cin>>s;
    vector<vector<int>> cnt(n+2,vector<int>(n+1,0));
    vector<int> pref(n+2,0);
    for(int i=0;i<=n;i++){
        pref[i+1] = pref[i]+(s[i]=='1');
    }
    for(int i=0;i<=n;i++){
        for(int j=0;j<i;j++){
            cnt[i][j] = cnt[j][i] = (pref[i]-pref[j] == i-j);
            //cout << j<<" "<<i<<" "<<cnt[i][j]<<'\n';
        }
    }
    for(int tt=1;tt<=q;tt++){
        string t;
        cin>>t;
        if(t == "toggle"){
            int ind;
            cin>>ind;
            ind--;
            if(s[ind] == '0')s[ind] = '1';
            else s[ind] = '0';
            for(int i=0;i<n;i++){
                pref[i+1] = pref[i]+(s[i]=='1');
            }
        }else{
            int a,b;
            cin>>a>>b;
            a--,b--;
            cout << cnt[a][b] << '\n';
        }
        for(int i=0;i<=n;i++){
            for(int j=0;j<i;j++){
                cnt[i][j] = cnt[j][i] += (pref[i]-pref[j] == i-j);
            }
        }
    }
    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...