Submission #1172181

#TimeUsernameProblemLanguageResultExecution timeMemory
1172181sunboiCarnival (CEOI14_carnival)C++20
100 / 100
4 ms424 KiB
#include <bits/stdc++.h>
using namespace std;


void ask(vector<int> a){
    cout << a.size() << ' ';
    for (int i : a){
        cout << i << ' ';
    } 
    cout << endl;
}

vector<int> ans(151);
int cnt = 1;


void dp(vector<int> a, int c){
    
    /*cout << "PEDRO::::" << endl;
    for (int i = 0; i < a.size(); i++){
        cout << a[i] << ' ';
    }
    cout << endl;
    cout << c << endl;*/
    if (c == 1){
        for (int i : a){
            ans[i] = cnt;
        }
        cnt++;
        return;
    }
    
    int distintos = 0;
    vector<int> choosing;
    vector<int> bastardos;
    for (int i = 0; i < c / 2; i++){
        choosing.push_back(a[i]);
    }
    /*for (int i : choosing){
        cout << i << ' ';
    }
    cout << endl;
    cout << "nigger << endl" << endl;*/
    for (int i = c / 2; i < a.size(); i++){
        choosing.push_back(a[i]);
        ask(choosing);
        cin >> distintos;
        choosing.pop_back();
        
        if(distintos <= c / 2){
            choosing.push_back(a[i]);
        }else bastardos.push_back(a[i]);
    }
    
    dp(choosing, c / 2);
    dp(bastardos, (c + 1) / 2);
}


int main(){
    int n; cin >> n;
    vector<int> a;
    for (int i = 1; i <= n; i++){
        a.push_back(i);
    }
    
    ask(a);
    int c = 0;
    cin >> c;
    
    dp(a, c);
    
    
    cout << 0 << ' ';
    for (int i = 1; i <= n; i++){
        cout << ans[i] << ' ';
    }
    cout << endl;
}
#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...