제출 #1229605

#제출 시각아이디문제언어결과실행 시간메모리
1229605yixuan19사육제 (CEOI14_carnival)C++20
0 / 100
0 ms408 KiB
#include <bits/stdc++.h>


using namespace std;

int search(int l, int r, int i, int memo){
    int res;
    while (l < r){
        int m = (l+r+1)/2;
        cout<<r-l+2<<' ';
        for (int j = l; j <= r; ++j){
            cout<<j<<' ';
        }
        cout<<i<<' ';
        cout<<endl;
        cin >> res;
        if (res == r-l+2){
            //cout<<"look on left "<<endl;
            r = m-1;
        }else{
            //cout<<"look on right "<<m<<' '<<endl;
            l = m+1;
        }
        
    }
    return r;
}
int main(){
    
    int N;
    cin >> N;
    vector<int> sol(N+1);
    
    cout<<2<<' '<<1<<' '<<2<<endl;
    int res;
    cin >> res;
    if (res == 2){
        sol[1] = 1;
        sol[2] = 2;
    }else{
        sol[1] = 1;
        sol[2] = 1;
    }
    vector<int> people;
    int num = 2;
    people.push_back(1);
    people.push_back(2);
    int memo = res;
    for (int i = 3; i <= N; ++i){
        people.push_back(i);
        num++;
        cout<<num<<' ';
        for (int in: people){
            cout<<in<<' ';
        }
        cout<<endl;
        cin >> res;
        if (res > memo){
            sol[i] = res;
            memo = res;
        }else{
            int l = 1;
            int r = i-1;
            int m = (l+r+1)/2;
                cout<<r-l+2<<' ';
                for (int j = m; j <= r; ++j){
                    cout<<j<<' ';
                }
                cout<<i<<' ';
                cout<<endl;
                cin >> res;
                int s;
                if (res == memo){
                    s = search(l,m-1,i,memo);
                    
                }else{
                    s= search(m+1,r,i,memo);
                }
            //cout<<" s "<<s<<endl;
            sol[i] = sol[s];
        }
        
    }
    cout<<0<<' ';
    for (int i = 1; i <= N; ++i){
        cout<<sol[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...