# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
209214 | mieszko11b | Street Lamps (APIO19_street_lamps) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int n, q;
//~ char c[107][107];
int before[300007], last0[300007];
char c[300007];
int main() {
scanf("%d%d", &n, &q);
if(n <= 100 && q <= 100) {
scanf(" %s", c[0] + 1);
for(int i = 1 ; i <= q ; i++) {
char comm[10];
for(int j = 1 ; j <= n ; j++)
c[i][j] = c[i - 1][j];
scanf(" %s", comm);
if(comm[0] == 'q') {
int a, b;
scanf("%d%d", &a, &b);
int res = 0;
for(int j = 0 ; j < i ; j++) {
bool ok = true;
for(int k = a ; k < b ; k++)
if(c[j][k] == '0')
ok = false;
if(ok) res++;
}
printf("%d\n", res);
} else {
int w;
scanf("%d", &w);
if(c[i][w] == '0') c[i][w] = '1';
else c[i][w] = '0';
}
}
}
scanf(" %s", c + 1);
memset(last0, -1, sizeof last0);
for(int i = 1 ; i <= q ; i++) {
char comm[10];
scanf(" %s", comm);
if(comm[0] == 'q') {
int a, b;
scanf("%d%d", &a, &b);
int res = before[a];
if(c[a] == '1')
res += i - last0[a] - 1;
printf("%d\n", res);
} else {
int w;
scanf("%d", &w);
if(c[w] == '1') {
before[w] += i - last0[w] - 1;
c[w] = '0';
} else {
last0[w] = i - 1;
c[w] = '1';
}
}
}
return 0;
}