#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;
// int ask(vector<int> vec){
// cout << vec.size() << endl;
// for(auto v:vec){
// cout << v << " ";
// }
// cout << endl;
// int ans;
// cin >> ans;
// return ans;
// }
signed main() {
int n;
cin >> n;
int col = 0;
int ans[n + 1];
vector<int> v;
for(int i = 1; i <= n; i++){
cout << v.size() + 1;
for(auto u:v) cout << u << " ";
cout << i << endl;
int res; cin >> res;
if(res == v.size() + 1){
v.pb(i);
col++;
ans[i] = col;
continue;
}
int l = 0, r = v.size() - 1, anss = 0;
while(l <= r){
int mid = (l + r) / 2;
cout << mid + 2 << endl;
for(int j = 0; j <= mid; j++) cout << v[j] << " ";
cout << i << endl;
int ress; cin >> ress;
if(ress == mid + 2){
l = mid + 1;
}else{
anss = r;
r = mid - 1;
}
}
ans[i] = ans[v[anss]];
}
for(int i = 1; i <= n; i++) cout << ans[i] << " ";
cout << endl;
}
# | 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... |