#include <bits/stdc++.h>
using namespace std;
#define int long long
void query(vector<int> a){
cout << a.size() << ' ';
for (auto i : a) cout << i << ' ';
cout << endl;
}
int ans(){
int x; cin >> x;
return x;
}
void solve(){
int n; cin >> n;
int lst = 0;
vector<int> dist;
for (int i = 1; i <= n; i++){
dist.push_back(i);
query(dist);
int x = ans();
if (x == lst) dist.pop_back();
else lst = x;
}
int val[n + 1] = {};
for (int i = 0; i < (int) dist.size(); i++) val[dist[i]] = i + 1;
for (int i = 1; i <= n; i++){
if (val[i] > 0) continue;
int l = 0, r = dist.size() - 1;
while (r > l){
int m = (l + r) / 2;
vector<int> q = {i};
for (int j = l; j <= m; j++) q.push_back(dist[j]);
query(q);
int x = ans();
if (x == m - l + 1){
r = m;
}
else l = m + 1;
}
val[i] = val[dist[l]];
}
for (int i = 1; i <= n; i++) cout << val[i] << ' ';
cout << endl;
}
signed main(){
int tc = 1;
// cin >> tc;
while (tc--){
solve();
}
}
| # | 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... |