Submission #116973

#TimeUsernameProblemLanguageResultExecution timeMemory
116973IOrtroiiiCarnival (CEOI14_carnival)C++14
100 / 100
27 ms392 KiB
#include <bits/stdc++.h> using namespace std; const int N = 155; int n; int color[N]; int get(vector<int> val) { cout << val.size() << ' '; for (int v : val) { cout << v << ' '; } cout << endl; int ans; cin >> ans; return ans; } bool hasSame(int u, vector<int> val) { if (val.empty()) return false; int x = get(val); val.push_back(u); int y = get(val); return x == y; } int main() { cin >> n; int cnt = 0; for (int i = 1; i <= n; ++i) if (!color[i]) { color[i] = ++cnt; vector<int> val; for (int j = i + 1; j <= n; ++j) { if (!color[j]) { val.push_back(j); } } while (!val.empty() && hasSame(i, val)) { int l = 0, r = val.size() - 1; while (l < r) { int md = (l + r) >> 1; if (hasSame(i, vector<int>(val.begin(), val.begin() + md + 1))) { r = md; } else { l = md + 1; } } color[val[l]] = cnt; val = vector<int>(val.begin() + l + 1, val.end()); } } cout << 0 << ' '; for (int i = 1; i <= n; ++i) { cout << color[i] << ' '; } cout << endl; }
#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...