#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define eb emplace_back
#define ppb pop_back
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
const char nl = '\n';
int memo[155][155];
void solve(){
auto ask = [&](int l, int r){
if (memo[l][r]) return memo[l][r];
cout << r-l+1 << ' ';
for (int i = l; i <= r; i++) cout << i << ' ';
cout << endl;
int x; cin >> x;
memo[l][r] = x;
return memo[l][r];
};
int n, cnt = 2;
cin >> n;
int ans[n+1];
memo[1][1] = 1;
ans[1] = 1;
for (int i = 2; i <= n; i++){
int l = 1, r = i-1, ret = -1;
while (l <= r){
int mid = (l+r)/2;
if (ask(mid, i) == ask(mid, i-1)){
ret = mid;
l = mid+1;
}
else r = mid-1;
}
if (ret == -1) ans[i] = cnt++;
else ans[i] = ans[ret];
set<int> cnt;
for (int j = i; j >= 1; j--){
cnt.insert(ans[j]);
memo[j][i] = cnt.size();
}
};
cout << "0 ";
for (int i = 1; i <= n; i++){
cout << ans[i] << ' ';
}
cout << endl;
}
int main(){
int t = 1; //cin >> t;
while (t--){
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... |