Submission #1346784

#TimeUsernameProblemLanguageResultExecution timeMemory
1346784nathlol2Carnival (CEOI14_carnival)C++20
100 / 100
2 ms428 KiB
#include <bits/stdc++.h>
using namespace std;
int n, c;

int ask(vector<int> &v){
    if(v.size() == 0) return 0;
    cout << v.size() << ' ';
    for(auto x : v) cout << x << ' ';
    cout << endl;
    fflush(stdout);
    int x; cin >> x; return x;
}

signed main(){
    // ios_base::sync_with_stdio(false);
    // cin.tie(NULL);

    cin >> n;
    vector<int> ans(n + 1), v;
    for(int i = 1;i<=n;i++){
        auto tmp = v;
        tmp.push_back(i);
        if(ask(tmp) > ask(v)){
            ans[i] = ++c;
            v.push_back(i);
        }else{
            int l = 0, r = v.size() - 1, res;
            while(l <= r){
                int md = (l + r) / 2;
                vector<int> t = {i};
                for(int j = md;j<v.size();j++){
                    t.push_back(v[j]);
                }
                if(ask(t) < v.size() - md + 1){
                    res = md;
                    l = md + 1;
                }else{
                    r = md - 1;
                }
            }
            ans[i] = ans[v[res]];
        }
    }
    cout << "0 ";
    for(int i = 1;i<=n;i++) cout << ans[i] << ' ';
    fflush(stdout);
}
#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...