Submission #995903

#TimeUsernameProblemLanguageResultExecution timeMemory
995903BuzzyBeezCarnival (CEOI14_carnival)C++17
0 / 100
1 ms600 KiB
#include <bits/stdc++.h> using namespace std; int n, res; vector<int> v; set<int> rem; int a[200]; vector<int> Q; int ask(int l, int lim) { Q.clear(); for (int i = l; i <= lim; ++i) if (!a[i]) Q.push_back(i); // assert(Q.size()); cout << Q.size() << ' '; for (int i : Q) cout << i << ' '; cout << endl; cin >> res; return res; } void answer() { cout << 0 << ' '; for (int i = 1; i <= n; ++i) cout << a[i] << ' '; cout << endl; } signed main() { cin >> n; int l, r, mid, pt, num = 1, m; v.resize(n + 1); iota(v.begin(), v.end(), 0); for (int i = 1; i <= n; ++i) rem.insert(i); while (rem.size()) { pt = 0; m = *prev(rem.end()); // cout << "Remaining : "; // for (int i : rem) cout << i << ' '; // cout << endl; if (ask(1, m) == 1) { for (int i : rem) a[i] = num; break; } while (pt < m) { if (ask(1, m - 1) < ask(1, m)) pt = m; else { l = pt + 1; r = m - 1; while (l <= r) { mid = (l + r) / 2; // assert(mid < m); if (ask(mid, m - 1) == ask(mid, m)) l = mid + 1; else r = mid - 1; } pt = l - 1; } assert(!a[pt]); a[pt] = num; // assert(rem.find(pt) != rem.end()); rem.erase(pt); // cout << "found " << pt << " : " << a[pt] << "!!" << endl; } ++num; } answer(); }
#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...