Submission #304738

#TimeUsernameProblemLanguageResultExecution timeMemory
304738sofapudenCarnival (CEOI14_carnival)C++14
100 / 100
14 ms384 KiB
#include <bits/stdc++.h> using namespace std; vector<int> used; vector<int> unused; vector<int> output; int k = 0; int find2(int lo, int hi, int target){ int x; cout << hi-lo+2 << " "; for(int i = lo; i <= hi; ++i){ cout << used[i] << " "; } cout << target << endl; cin >> x; if(x == hi-lo+2)return -1; if(hi == lo){ output[target-1] = output[used[hi]-1]; return hi; } int y = find2(lo, (lo+hi)/2, target); if(y != -1)return y; else return find2((lo+hi)/2+1, hi, target); } void find(int lo, int hi){ k++; cout << hi-lo+1+(int)used.size() << " "; for(int i = 0; i < (int)used.size(); ++i){ cout << used[i] << " "; } for(int i = lo; i <= hi; ++i){ cout << i << " "; } cout << endl; int y; cin >> y; if(y == hi-lo+1+(int)used.size()){ for(int i = lo; i <= hi; ++i){ used.push_back(i); } return; } if(lo == hi || y == 1){ for(int i = lo; i <= hi; ++i){ unused.push_back(i); } return; } find(lo, (lo+hi)/2); find((lo+hi)/2+1, hi); } int main(){ int n; cin >> n; output.resize(n); cout << n << " "; for(int i = 1; i <= n; ++i){ cout << i << " "; } cout << endl; int x; cin >> x; if(x == n){ cout << 0 << " "; for(int i = 1; i <= n; ++i){ cout << i << " "; } cout << endl; return 0; } if(x == 1){ cout << "0 "; for(int i = 0; i < n; ++i){ cout << "1 "; } cout << endl; return 0; } int hi = n; while(x != hi){ k++; hi/=2; cout << hi << " "; for(int i = 1; i <= hi; ++i){ cout << i << " "; } cout << endl; cin >> x; } for(int i = 1; i <= hi; ++i){ used.push_back(i); } find(hi+1, n); for(int i = 0; i < (int)used.size(); ++i){ output[used[i]-1] = i+1; } for(int i = 0; i < (int)unused.size(); ++i){ find2(0,(int)used.size()-1,unused[i]); } cout << "0 "; for(int i : output){ cout << 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...