Submission #119235

#TimeUsernameProblemLanguageResultExecution timeMemory
119235RubanovCarnival (CEOI14_carnival)C++17
100 / 100
20 ms512 KiB
#include <bits/stdc++.h> #define ll long long #define f first #define s second using namespace std; int N,cnt=1,A[151]; vector<int> ss; void ask(int cur,int l,int r) { int w = 1+(r-l+1); cout<<w<<' '<<cur<<' '; for (int i=l;i<=r;i++) cout<<ss[i]<<' '; cout<<endl; } int main() { cin>>N; for (int i=1;i<=N;i++) ss.push_back(i); while (!ss.empty()) { int cur=*ss.begin(),ans,ans1,ans2; ss.erase(ss.begin()); A[cur]=cnt; vector<pair<int,int>> temp; temp.push_back({0,(int)ss.size()-1}); while (!temp.empty()) { int l = temp.back().f; int r = temp.back().s; int mid = (l+r)>>1; temp.pop_back(); if (l > r) continue; if (r==l) { ask(cur,l,l); cin>>ans; if (ans==1) { A[ss[l]]=cnt; ss.erase(ss.begin()+l); } continue; } ask(cur,l,r); cin>>ans1; if (ans1==1) { for (int i=l;i<=r;i++) A[ss[i]]=cnt; ss.erase(ss.begin()+l,ss.begin()+r+1); continue; } ask(ss[l],l+1,r); cin>>ans2; if (ans1!=ans2) continue; temp.push_back({l,mid}); temp.push_back({mid+1,r}); } cnt++; } cout<<"0 "; for (int i=1;i<=N;i++) cout<<A[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...