結果
問題 | No.2724 Coprime Game 1 |
ユーザー | Xinyuan Huang |
提出日時 | 2024-12-20 17:03:54 |
言語 | C++23(gcc13) (gcc 13.2.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 884 bytes |
コンパイル時間 | 10,725 ms |
コンパイル使用メモリ | 336,460 KB |
実行使用メモリ | 176,164 KB |
最終ジャッジ日時 | 2024-12-20 17:04:15 |
合計ジャッジ時間 | 20,909 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1,053 ms
175,032 KB |
testcase_01 | AC | 979 ms
174,924 KB |
testcase_02 | AC | 997 ms
174,868 KB |
testcase_03 | AC | 1,035 ms
176,064 KB |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> constexpr int N = 3e6; std::vector<int> g[N + 1]; int main() { std::cin.tie(nullptr)->sync_with_stdio(false); for (int i = 2; i * i <= N; ++i) { if (!g[i].empty()) continue; for (int j = i + i; j <= N; j += i) g[j].push_back(i); } int q; std::cin >> q; std::vector<int> queries(q), ord(q), res(q); for (auto &x : queries) std::cin >> x; std::iota(ord.begin(), ord.end(), 0); std::ranges::sort(ord, {}, [&](int i) {return queries[i];}); int u = 2; atcoder::dsu d(N + 1); for (auto &i : ord) { int n = queries[i]; while (u <= n) { for (auto &v : g[u]) d.merge(u, v); u += 1; } res[i] = d.size(n) & 1; } for (auto &x : res) std::cout << (x ? "P" : "K") << '\n'; return 0; }