Submission #1231034

#TimeUsernameProblemLanguageResultExecution timeMemory
1231034sethodCarnival (CEOI14_carnival)C++20
0 / 100
0 ms620 KiB
#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];

int 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];
}

void solve(){
	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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...