답안 #745101

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
745101 2023-05-19T11:59:49 Z Itamar 가로등 (APIO19_street_lamps) C++14
0 / 100
411 ms 524288 KB
#include <iostream>
using namespace std;
#include<bitset>
#include<vector>
#define vi vector<int>

int main()
{
    int n, q;
    cin >> n >> q;
    const int siz = 3e5;
    bitset<siz> b;
    string s;
    cin >> s;
    vector<vi> ans(n,vi(n));
    for (int i = 0; i < n; i++)b[i] = (s[i] == '1');
    for (int i = 1; i <= q; i++) {
        string st;
        cin >> st;
        if (st == "toggle") {
            int in;
            cin >> in;
            in--;
            if (b[in]) {
                int x = in, y = in;
                while (x&&b[x])x--;
                while (y<n-1&&b[y])y++;
                for (int j = x; j <= y; j++) {
                    for (int k = x; k <= y; k++) {
                        ans[j][k] += i;
                    }
                }
                for (int j = x; j <= in-1; j++) {
                    for (int k = x; k <= in-1; k++) {
                        ans[j][k] -= i;
                    }
                }
                for (int j = in+1; j <=y; j++) {
                    for (int k = in+1; k <=y; k++) {
                        ans[j][k] -= i;
                    }
                }
                    b[in] = 0;
            }
            else {
                b[in] = 1;
                int x = in, y = in;
                while (x&&b[x])x--;
                while (y<n-1&&b[y])y++;
                for (int j = x; j <= y; j++) {
                    for (int k = x; k <= y; k++) {
                        ans[j][k] -= i;
                    }
                }
                for (int j = x; j <= in - 1; j++) {
                    for (int k = x; k <= in - 1; k++) {
                        ans[j][k] += i;
                    }
                }
                for (int j = in + 1; j <= y; j++) {
                    for (int k = in + 1; k <= y; k++) {
                        ans[j][k] += i;
                    }
                }
            }
        }
        else {
            int x, y;
            cin >> x >> y;
            x--, y -= 2;
            bool f = 1;
            for (int i = x; i <= y; i++)if (b[i] == 0)f = 0;
            cout << ans[x][y] + i *f << "\n";
        }
    }
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 338 ms 1228 KB Output is correct
2 Correct 351 ms 1792 KB Output is correct
3 Correct 411 ms 99248 KB Output is correct
4 Runtime error 190 ms 524288 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 4180 KB Output is correct
2 Incorrect 5 ms 4180 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 4180 KB Output is correct
2 Incorrect 4 ms 4180 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -