#include <bits/stdc++.h>
using namespace std;
#define chinatsu ios_base::sync_with_stdio(false);
#define kano cin.tie(nullptr); cout.tie(nullptr)
#define int long long
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
const int MOD = 1e9 + 7;
const int INF = 1E18;
int dp[155][155], ans[155];
void solve(){
auto q = [&](int l, int r){
if(dp[l][r] != -1) return dp[l][r];
for(int i = l; i <= r; i++) cout << i << " ";
cout << endl;
int x; cin >> x;
dp[l][r] = x;
return dp[l][r];
};
memset(dp, -1, sizeof(dp));
int n, rn;
cin >> n;
dp[1][1] = 1;
ans[1] = 1;
for(int i = 2; i <= n; i++){
int l = 1, r = i - 1, tmp = -1;
while(l <= r){
int m = (l + r) / 2;
if(q(m, i) == q(m, i - 1)){
tmp = m;
l = m + 1;
}
else r = m - 1;
}
if(tmp == -1) ans[i] = rn++;
else ans[i] = ans[tmp];
set<int> cnt;
for(int j = i; j >= 1; j--){
cnt.insert(ans[j]);
dp[j][i] = cnt.size();
}
};
cout << 0 << " ";
for(int i = 0; i <= n; i++){
cout << ans[i] << " ";
}
cout << endl;
return;
}
signed main(){
chinatsu kano;
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... |