#include "bits/stdc++.h"
using namespace std;
#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif
const int maxn = 155;
int n;
int a[maxn];
int res[maxn];
int ask(vector<int> v) {
cout << (int)v.size() << ' ';
for(auto i:v) cout << i << " ";
cout << endl;
#ifndef duc_debug
int x; cin >> x;
return x;
#else
set<int> s;
for(auto i:v) s.insert(a[i]);
return (int)s.size();
#endif
}
void solve() {
cin >> n;
#ifdef duc_debug
for(int i = 1; i <= n; ++i) {
cin >> a[i];
}
#endif
vector<int> par;
par.push_back(1);
int prv = 1;
for(int i = 2; i <= n; ++i) {
vector<int> t; for(int j = 1; j <= i; ++j) {
t.push_back(j);
}
int cur = ask(t);
if(cur > prv) {
par.push_back(i);
prv = cur;
}
}
// debug(par);
for(int i = 0; i < (int)par.size(); ++i) {
res[par[i]] = i + 1;
}
for(int i = 1; i <= n; ++i) {
if(res[i]) continue;
int l = 0, r = (int)par.size() - 1, pos = -1;
while(l <= r) {
int mid = (l + r) >> 1;
vector<int> t;
for(int j = 0; j <= mid; ++j) {
t.push_back(par[j]);
}
t.push_back(i);
int se = ask(t);
if(se == mid + 1) {
pos = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
if(pos == -1) {
assert(false);
}
res[i] = res[par[pos]];
}
cout << 0 << " ";
for(int i = 1; i <= n; ++i) {
cout << res[i] << " ";
}
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
solve();
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... |