제출 #166689

#제출 시각아이디문제언어결과실행 시간메모리
166689rolimans사육제 (CEOI14_carnival)C++14
100 / 100
23 ms380 KiB
#include <bits/stdc++.h> using namespace std; const int MAX = 150; int costumes[MAX]; int nat = 1; int n; bool hasRepeated(int s,int e, int ref){ int res; if(s==e){ cout << 2 << " " << ref << " " << s << endl; cin >> res; if(res==1){ costumes[s] = costumes[ref]; return true; }else return false; }else{ int parts = e-s +1; cout << parts << " "; for(int i=s;i<=e;i++){ cout << i; if(i!=e) cout<<" "; else cout << endl; } cin >> res; int mem = res; parts++; cout << parts << " " << ref << " "; for(int i=s;i<=e;i++){ cout << i; if(i!=e) cout<<" "; else cout << endl; } cin >> res; return res==mem; } } void check(int s,int e,int ref){ int fHalf; int sHalf; int c = e-s+1; if(c!=1){ fHalf = e-(c/2); sHalf = fHalf+1; }else{ fHalf = e; sHalf= e; } if(hasRepeated(s,fHalf,ref) && s!=fHalf){ check(s,fHalf,ref); } if(hasRepeated(sHalf,e,ref) && sHalf!=e){ check(sHalf,e,ref); } } int main() { ios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr); cin >> n; for(int i=1;i<=n;i++){ if(costumes[i]==0){ costumes[i] = nat++; if(i!=n) check(i+1,n,i); } } cout << 0 << " "; for(int i=1;i<=n;i++){ cout << costumes[i]; if(i!=n){ cout<<" "; }else{ 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...