Submission #1210561

#TimeUsernameProblemLanguageResultExecution timeMemory
1210561jadevineCarnival (CEOI14_carnival)C++20
20 / 100
26 ms420 KiB
#include <bits/stdc++.h> using namespace std; int N; void flush() { cout << endl; cout.flush(); } int query(const vector<int>& people) { cout << people.size(); for (int p : people) cout << " " << p; flush(); // very important int res; cin >> res; return res; } bool sameCostume(const vector<int>& group, int x) { int l = 0, r = group.size(); while (r - l > 1) { int mid = (l + r) / 2; vector<int> half(group.begin() + l, group.begin() + mid); half.push_back(x); int res = query(half); if (res == half.size() - 1) { r = mid; } else { l = mid; } } vector<int> test = {group[l], x}; return query(test) == 1; } int main() { cin >> N; vector<vector<int>> groups; vector<int> costume(N + 1); for (int i = 1; i <= N; ++i) { bool found = false; for (int j = 0; j < groups.size(); ++j) { if (sameCostume(groups[j], i)) { groups[j].push_back(i); found = true; break; } } if (!found) { groups.push_back({i}); } } for (int i = 0; i < groups.size(); ++i) { for (int x : groups[i]) { costume[x] = i + 1; } } cout << 0; for (int i = 1; i <= N; ++i) cout << " " << costume[i]; flush(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...