Submission #1230949

#TimeUsernameProblemLanguageResultExecution timeMemory
1230949warrennCarnival (CEOI14_carnival)C++20
100 / 100
5 ms412 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long 

int col[152];
int n;

int query(int l,int r){
    cout<<r-l+1<<" ";
    for(int q=l;q<=r;q++){
        cout<<q<<" ";
    }
    cout<<endl;
    int hah;
    cin>>hah;
    return hah;
}

int solve(int l,int r){
    bool udh[n+1];
    int cnt=0;
    memset(udh,false,sizeof udh);
    for(int q=l;q<=r;q++){
        if(udh[col[q]])continue;
        cnt++;
        udh[col[q]]=true;
    }
    return cnt;
}

signed main(){
    cin>>n;
    col[1]=1;
    int cnt=2;
    for(int q=2;q<=n;q++){
        int l=1;
        int r=q-1;
        int pos=-1;
        while(l<=r){
            int mid=(l+r)/2;
            int hah=query(mid,q);
            if(hah==solve(mid,q-1)){
                pos=mid;
                l=mid+1;
            }
            else{
                r=mid-1;
            }
        }
        if(pos==-1){
            col[q]=cnt;
            cnt++;
        }
        else{
            col[q]=col[pos];
        }
    }
    cout<<0;
    for(int q=1;q<=n;q++){
        cout<<" "<<col[q];
    }
    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...