제출 #1357699

#제출 시각아이디문제언어결과실행 시간메모리
1357699tsetsenbileg가로등 (APIO19_street_lamps)C++20
20 / 100
5099 ms589824 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
using ld = long double;
using pr = pair<int, int>;
using prf = pair<long double, int>;
using ld = long double;
#define pb push_back
#define ff first
#define ss second
const int INF = 1e18+1, MOD = 1e9+7, MAXN = 4e5+5, MAXA = 41;

void solve() {
    int n, q;
    cin >> n >> q;
    string s;
    cin >> s;
    vector<array<int, 3>> que(q);
    for (int i = 0; i < q; i++) {
        string t;
        cin >> t;
        if (t == "query") {
            int a, b;
            cin >> a >> b;
            que[i] = {0, a, b-1};
        }
        else {
            int a; cin >> a;
            que[i] = {1, a, 0};
        }
    }
    vector<vector<int>> pref(q, vector<int>(n+1, 0));
    vector<int> res;
    vector<int> a(n+1);
    for (int i = 0; i < n; i++) a[i+1] = s[i] - '0';
    for (int i = 0; i < q; i++) {
        auto [t, x, y] = que[i];
        for (int j = 1; j <= n; j++) pref[i][j] = pref[i][j-1] + a[j];
        if (t == 1) {
            a[x] ^= 1;
        }
        if (t == 0) {
            int sum = 0;
            for (int j = 0; j <= i; j++) {
                if (pref[j][y] - pref[j][x-1] == y - x + 1) sum++;
            }
            res.pb(sum);
        }
    }
    for (auto i : res) cout << i << '\n';
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    // int T;
    // cin >> T;
    // while (T--)
    solve();
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…