#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define rep(i, a, b) for (int i = a; i <= b; i++)
const int N = 2e6;
int ans[N];
vector<int> vec;
void que(int idx) {
cout << vec.size() + 1 << " ";
for (auto x : vec) cout << x << " ";
cout << idx << endl;
cout.flush(); // <<< FLUSH HERE
}
int binary(int idx) {
int l = 0, r = vec.size() - 1;
int res = -1;
while (l <= r) {
int mid = (l + r) / 2;
cout << mid - l + 2 << " "; // +1 for idx
for (int i = l; i <= mid; i++) cout << vec[i] << " ";
cout << idx << endl;
cout.flush(); // <<< FLUSH HERE
int raod;
cin >> raod;
if (raod == mid - l + 2) {
// all different
l = mid + 1;
} else {
// duplicate found
res = mid;
r = mid - 1;
}
}
return ans[vec[res]];
}
signed main() {
int n;
cin >> n;
vec.pb(1);
ans[1] = 1;
rep(i, 2, n) {
que(i);
int raod;
cin >> raod;
if (raod == vec.size() + 1) {
vec.pb(i);
ans[i] = vec.size();
} else {
ans[i] = binary(i);
}
}
cout << 0 << " ";
rep(i, 1, n) cout << ans[i] << " ";
cout << endl;
cout.flush();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |