Submission #1200395

#TimeUsernameProblemLanguageResultExecution timeMemory
1200395WarinchaiCarnival (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(fp(v)>fp(u))swap(u,v); return void(p[fp(u)]=fp(v)); } vector<int>v; int n; int get(vector<int>&v){ cout<<v.size()<<" "; for(auto x:v)assert(x<=n),cout<<x<<" "; cout<<endl; int x;cin>>x; return x; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<=n;i++)p[i]=i; v.push_back(1); for(int i=2;i<=n;i++){ v.push_back(i); int x=get(v); if(x!=v.size()){ 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; } } assert(ans>=0&&ans<v.size()); assert(v[ans]<=n); un(v[ans],i); v.pop_back(); } } cout<<"0 "; for(int i=1;i<=n;i++)assert(fp(i)<=n),cout<<fp(i)<<" "; cout<<endl; 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...