Submission #1144262

#TimeUsernameProblemLanguageResultExecution timeMemory
1144262ind1v사육제 (CEOI14_carnival)C++17
0 / 100
1 ms436 KiB
#include <bits/stdc++.h> using namespace std; const int N = 155; struct fenwick_tree { int f[N]; fenwick_tree() { memset(f, 0, sizeof(f)); } void upd(int i, int x) { for (; i < N; i += i & -i) { f[i] += x; } } int get(int i) { int r = 0; for (; i > 0; i -= i & -i) { r += f[i]; } return r; } int get(int l, int r) { return get(r) - get(l - 1); } }; struct dsu { int lab[N]; dsu() { memset(lab, -1, sizeof(lab)); } int find(int u) { return lab[u] < 0 ? u : lab[u] = find(lab[u]); } bool merge(int u, int v) { if ((u = find(u)) == (v = find(v))) { return false; } if (lab[u] > lab[v]) { swap(u, v); } lab[u] += lab[v]; lab[v] = u; return true; } }; int n; int c[N]; fenwick_tree ft; dsu g; int ask(int l, int r) { cout << r - l + 1 << ' '; for (int i = l; i <= r; i++) { cout << i << ' '; } cout << endl; int res; cin >> res; return res; } void answer() { cout << 0 << ' '; for (int i = 1; i <= n; i++) { cout << c[i] << ' '; } cout << endl; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n; int prv = 0; for (int i = 1; i <= n; i++) { int res = ask(1, i); ft.upd(i, 1); if (res == prv + 1) { prv = res; continue; } else { // prv = res; // int lo = 1, hi = i - 1, ans = -1; // while (lo <= hi) { // int mid = (lo + hi) >> 1; // if (ft.get(mid, i) == ask(mid, i)) { // ans = mid; // hi = mid - 1; // } else { // lo = mid + 1; // } // } // ans--; // ft.upd(ans, -1); // g.merge(ans, i); } } for (int i = 1; i <= n; i++) { c[i] = g.find(i); } answer(); 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...