Submission #1206073

#TimeUsernameProblemLanguageResultExecution timeMemory
1206073avighnaCOVID tests (CEOI24_covid)C++20
10 / 100
33 ms424 KiB
#include <bits/stdc++.h> int main() { int n, t; double p; std::cin >> n >> p >> t; if (t == 1) { std::vector<bool> ans(n); for (int i = 0; i < n; ++i) { std::cout << "Q "; for (int j = 0; j < n; ++j) { std::cout << (i == j); } std::cout << std::endl; char c; std::cin >> c; ans[i] = c == 'P'; } std::cout << "A "; for (int i = 0; i < n; ++i) { std::cout << ans[i]; } std::cout << std::endl; char c; std::cin >> c; return 0; } while (t--) { int log = std::log(0.5) / std::log(1 - p); std::vector<int> rem(n); std::iota(rem.begin(), rem.end(), 0); std::mt19937 gen(std::random_device{}()); std::vector<bool> ans(n); int cnt = 0; while (!rem.empty()) { int sample_size = std::max(1, std::min(int(rem.size()) >> (cnt + 1), log)); std::shuffle(rem.begin(), rem.end(), gen); std::vector<bool> q(n); int last = -1; while (sample_size--) { q[last = rem.back()] = true; rem.pop_back(); } std::cout << "Q "; for (int i = 0; i < n; ++i) { std::cout << q[i]; } std::cout << std::endl; char c; std::cin >> c; if (c == 'P') { if (sample_size == 1) { ans[last] = true; } else { for (int i = 0; i < n; ++i) { if (q[i]) { rem.push_back(i); } } } cnt++; } else { cnt = 0; } // 100*(0.5^10) = 0.097% chance of failure if (cnt > 10) { break; } } while (!rem.empty()) { ans[rem.back()] = true; rem.pop_back(); } std::cout << "A "; for (int i = 0; i < n; ++i) { std::cout << ans[i]; } std::cout << std::endl; char c; std::cin >> c; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...