Submission #1188305

#TimeUsernameProblemLanguageResultExecution timeMemory
1188305JungPSCarnival (CEOI14_carnival)C++20
20 / 100
25 ms512 KiB
#include<iostream> #include<vector> #include<algorithm> using namespace std; int parent[157]; int sz[157]; int check[157][157]; vector<int> mp; int findpar(int x){ if(parent[x]==x) return x; return parent[x]=findpar(parent[x]); } signed main(){ int n; cin >> n; for(int i=1;i<=n;++i) parent[i]=i,sz[i]=1; cout << n << " "; for(int i=1;i<=n;++i) cout << i << " "; fflush(stdout); int c; cin >> c; int cnt; for(int i=1;i<=n;++i){ if(cnt==c) break; for(int j=i+1;j<=n;++j){ if(findpar(i)==findpar(j)) continue; if(check[findpar(i)][findpar(j)]) continue; if(check[findpar(i)][j]) continue; if(check[i][findpar(j)]) continue; cout << 2 << " " << i << " " << j << endl; fflush(stdout); int tmp; cin >> tmp; check[findpar(i)][findpar(j)]=check[findpar(j)][findpar(i)]=true; check[i][findpar(j)]=check[findpar(j)][i]=true; check[findpar(i)][j]=check[j][findpar(i)]=true; if(tmp==1){ parent[findpar(i)]=findpar(j); sz[findpar(j)]=0; sz[findpar(i)]+=sz[findpar(j)]; } cnt=0; for(int i=1;i<=n;++i){ if(sz[i]) ++cnt; } if(cnt==c) break; check[findpar(i)][findpar(j)]=check[findpar(j)][findpar(i)]=true; check[i][findpar(j)]=check[findpar(j)][i]=true; check[findpar(i)][j]=check[j][findpar(i)]=true; } } cout << 0 << " "; for(int i=1;i<=n;++i){ if(find(mp.begin(),mp.end(),findpar(i))==mp.end()){ mp.push_back(findpar(i)); } } for(int i=1;i<=n;++i){ cout << find(mp.begin(),mp.end(),findpar(i))-mp.begin()+1 << " "; } }
#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...