제출 #1188706

#제출 시각아이디문제언어결과실행 시간메모리
1188706flukeCarnival (CEOI14_carnival)C++20
100 / 100
3 ms420 KiB
#include <bits/stdc++.h>
#define ll long long 
#define f first 
#define s second 
#define pii pair<int,int>
#define emb emplace_back
#define em emplace
#define all(x) x.begin(),x.end()
#define DB cout<<"\n";system("pause");
#define sp <<" "<<
using namespace std;

int n;

int ask(int n ,vector <int> ans){
    cout<<n<<" ";
    for(auto x : ans)cout<<x<<" ";
    cout<<endl;
    int x;
    cin>>x;
    return x;
}

int main(){
    cin>>n;

    vector <int> group;
    vector <int> par(n+1);
    par[1]=1;
    group.emb(1);
    for(int i=2;i<=n;i++){
        vector <int> ask_  = group;
        ask_.emb(i);

        if(ask(ask_.size() , ask_) != group.size()){
            group.emb(i);
            par[i] = group.size();
        }
        else {
            int left = 0 , right = group.size() - 1;

            int ans;
            while(left <= right){
                int mid = (left + right)/2;
                vector <int> temp(group.begin(),group.begin() + mid + 1);
                temp.emb(i);

                if(ask(temp.size() , temp) > temp.size() - 1){
                    left = mid + 1;
                } 
                else {
                    ans = mid ; 
                    right = mid - 1;
                }
            }

            par[i] = ans+1;
        }

    }

    vector <int> output;
    for(int i=1;i<=n;i++){
        output.emb(par[i]);
    }

    ask(0,output);

    




}
#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...