답안 #555118

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
555118 2022-04-30T07:49:58 Z snasibov05 Radio (COCI22_radio) C++14
10 / 110
444 ms 59832 KB
#include <bits/stdc++.h>

using namespace std;

int gcd(int a, int b){
    while (b){
        a %= b;
        swap(a, b);
    }
    return a;
}

void solve1(int n, int q){
    vector<bool> v(n+1);
    for (int i = 0; i < q; ++i){
        char t; cin >> t;
        if (t == 'S') {
            int x; cin >> x;
            v[x] = !v[x];
        } else{
            int l, r; cin >> l >> r;
            bool flag = true;
            for (int j = l; j <= r; ++j){
                if (!v[j]) continue;
                for (int f = j + 1; f <= r; ++f){
                    if (!v[f]) continue;
                    if (gcd(j, f) > 1) flag = false;
                }
            }

            if (flag) cout << "NE\n";
            else cout << "DA\n";
        }
    }
}

void solve2(int n, int q){

    vector<vector<int>> prime(n+1);
    for (int i = 2; i <= n; ++i){
        if (!prime[i].empty()) continue;
        for (int j = i; j <= n; j += i){
            prime[j].push_back(i);
        }
    }

    vector<int> cnt(n+1);
    vector<bool> active(n+1);
    int k = 0;
    for (int i = 0; i < q; ++i){
        char t; cin >> t;
        if (t == 'S') {
            int x; cin >> x;
            if (!active[x]) {
                for (auto p : prime[x]) {
                    cnt[p]++;
                    if (cnt[p] == 2) k++;
                }
            } else{
                for (auto p : prime[x]){
                    cnt[p]--;
                    if (cnt[p] == 1) k--;
                }
            }
        } else{
            int l, r; cin >> l >> r;
            if (k > 0) cout << "DA\n";
            else cout << "NE\n";
        }
    }

}

int main() {
    int n, q; cin >> n >> q;

    if (n <= 100) solve1(n, q);
    else solve2(n, q);


    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 80 ms 6228 KB Output is correct
2 Correct 247 ms 29944 KB Output is correct
3 Correct 444 ms 59832 KB Output is correct
4 Incorrect 23 ms 6100 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 80 ms 6228 KB Output is correct
9 Correct 247 ms 29944 KB Output is correct
10 Correct 444 ms 59832 KB Output is correct
11 Incorrect 23 ms 6100 KB Output isn't correct
12 Halted 0 ms 0 KB -