Submission #555119

#TimeUsernameProblemLanguageResultExecution timeMemory
555119snasibov05Radio (COCI22_radio)C++14
40 / 110
441 ms59984 KiB
#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--; } } active[x] = !active[x]; } 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...