Submission #1231048

#TimeUsernameProblemLanguageResultExecution timeMemory
1231048sethod사육제 (CEOI14_carnival)C++20
0 / 100
3 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];


void solve(){
    auto q = [&](int l, int r){
        if(dp[l][r] != -1) return dp[l][r];
        vector<int> v;
        for(int i = l; i <= r; i++) v.pb(i);
        cout << v.size() << " ";
        for(auto& x : v) cout << x << " ";
        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 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...