# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
867919 | 2023-10-29T19:25:35 Z | borisAngelov | 사육제 (CEOI14_carnival) | C++17 | 10 ms | 464 KB |
#include <bits/stdc++.h> using namespace std; const int maxn = 1005; int n; struct DSU { int par[maxn]; int sz[maxn]; void build(int n) { for (int i = 1; i <= n; ++i) { par[i] = i; sz[i] = 1; } } int root(int node) { if (node == par[node]) { return node; } return par[node] = root(par[node]); } void connect(int x, int y) { x = root(x); y = root(y); if (x == y) { return; } if (sz[x] < sz[y]) { par[x] = y; sz[y] += sz[x]; } else { par[y] = x; sz[x] += sz[y]; } } }; DSU dsu; int query(const vector<int>& indexes) { cout << indexes.size() << " "; for (int i = 0; i < indexes.size(); ++i) { cout << indexes[i] << ' '; } cout << endl; int answer; cin >> answer; return answer; } void fastIO() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } int main() { fastIO(); cin >> n; dsu.build(n); for (int i = 1; i <= n; ++i) { vector<int> indexes; for (int j = 1; j <= i - 1; ++j) { indexes.push_back(j); } int diffWithout = (indexes.empty() ? 0 : query(indexes)); indexes.push_back(i); int diffWith = query(indexes); if (diffWith == diffWithout) // => i is not a root { int l = 1; int r = i - 1; while (l <= r) { int mid = (l + r) / 2; vector<int> preffix; for (int j = 1; j <= mid; ++j) { preffix.push_back(j); } diffWithout = query(preffix); preffix.push_back(i); diffWith = query(preffix); if (diffWith == diffWithout) { r = mid - 1; } else { l = mid + 1; } } assert(l < i); dsu.connect(l, i); } } cout << 0 << " "; for (int i = 1; i <= n; ++i) { cout << dsu.root(i) << ' '; } cout << endl; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 10 ms | 456 KB | Integer 19 violates the range [1, 11] |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 10 ms | 452 KB | Integer 6 violates the range [1, 5] |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 8 ms | 464 KB | Output is correct |
2 | Incorrect | 9 ms | 456 KB | Integer 11 violates the range [1, 8] |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 9 ms | 460 KB | Integer 5 violates the range [1, 4] |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 344 KB | Output is correct |
2 | Incorrect | 10 ms | 460 KB | Integer 20 violates the range [1, 17] |
3 | Halted | 0 ms | 0 KB | - |