제출 #1349008

#제출 시각아이디문제언어결과실행 시간메모리
1349008yc11사육제 (CEOI14_carnival)C++20
0 / 100
1 ms424 KiB
#include<bits/stdc++.h>
using namespace std;
vector<int> n3;
void answer(){
    for (int i = 0;i<(int)n3.size();i++) cout<<n3[i]<<" ";
}
int q(const vector<int>& m){
    cout<<m.size()<<" ";
    for (int i = 0;i<m.size();i++) cout<<m[i]<<" ";
        cout<<endl;
        int n2;
        cin>>n2;
        return n2;

}

signed main(){
    int n;
    cin>>n;
    int x1 = 0;
    vector<int> n1;
    int c = 0;
    n3.assign(n,0);
    for (int i = 0;i<n;i++){
        n1.push_back(i+1);
        int n2 = q(n1);
        if (n2>c){
            c++;
            x1++;
        }
        else{n1.pop_back();}
    }
    
    for (int i = 0;i<n1.size();i++){n3[n1[i]-1] = i+1;}
    if (x1==n) {answer();return 0;}
    for (int i = 0;i<n;i++){
        if (n3[i]!=0) continue;
        int a = 0;
        int b = (int)n3.size()-1;
        while (a<b){
            int x = (a+b)/2;
            vector<int> n4;
            for (int j= a;j<=x;j++) n4.push_back(n1[j]);
            n4.push_back(i+1);
            int y = q(n4);
            if (y==(x-a+1)) b = x;
            else a = x+1;


        }
  
        n3[i] = n3[n1[a]-1];
    }
    answer();
    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...