Submission #1200370

#TimeUsernameProblemLanguageResultExecution timeMemory
1200370WarinchaiCarnival (CEOI14_carnival)C++20
0 / 100
2 ms432 KiB
#include<bits/stdc++.h>
using namespace std;
int p[155];
int fp(int u){return p[u]==u?u:p[u]=fp(p[u]);}
void un(int u,int v){
    if(v>u)swap(u,v);
    return void(p[fp(u)]=fp(v));
}
vector<int>v;
int get(vector<int>&v){
    cout<<v.size()<<" ";
    for(auto x:v)cout<<x<<" ";
    cout<<endl;
    int x;cin>>x;
    return x;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;cin>>n;
    for(int i=1;i<=n;i++)p[i]=i;
    v.push_back(1);
    int cur=1;
    for(int i=2;i<=n;i++){
        v.push_back(i);
        int x=get(v);
        if(x==cur){
            int st=0,en=v.size()-1,ans=0;
            while(st<=en){
                int m=(st+en)/2;
                vector<int>nv;
                for(int j=m;j<v.size();j++){
                    nv.push_back(v[j]);
                }
                int val=get(nv);
                if(val!=nv.size()){
                    ans=m,st=m+1;
                }else{
                    en=m-1;
                }
            }
            un(v[ans],i);
            v.pop_back();
        }else{
            cur=x;
        }
    }
    cout<<"0 ";
    for(int i=1;i<=n;i++)cout<<fp(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...