# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
590120 | fabijan_cikac | Art Collections (BOI22_art) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#include "art.h"
const int MAXN = 4010;
/*int publish(vector<int> v){
cout << "u: ";
for (int i = 0; i < v.size(); ++i)
cout << v[i] << ' ';
cout << endl;
int x; cin >> x; return x;
}
void answer(vector<int> v){
for (int i = 0; i < v.size(); ++i) cout << v[i] << ' ';
}*/
int l[MAXN]; int bio[MAXN] = { 0 };
void solve(int N){
vector<int> sol; vector<int> v;
for (int i = 1; i <= N; ++i)
v.push_back(i);
for (int i = 0; i < N; ++i){
l[i] = publish(v); reverse(v.begin(), v.end());
v.pop_back(); reverse(v.begin(), v.end()); v.push_back(i + 1);
}
int num = 0;
for (int i = 0; i < N - 1; ++i){
int x = 0; /*cout << "a: ";
for (int j = 0; j < N; ++j){
cout << l[j] << ' ';
}
cout << endl;*/
while (l[(x + 1) % N] - l[x] != N - i - 1) ++x;
//cout << ':' << x << endl;
bio[x] = 1;
sol.push_back(x + 1); int kx = (x - 1 + N) % N; int cnt = 1;
while (kx != x){
l[kx] -= (cnt - num); ++cnt; kx = (kx - 1 + N) % N;
}
++num;
}
for (int i = 0; i < N; ++i){
if (!bio[i]) sol.push_back(i + 1);
}
answer(sol);
}
int main(){
solve(3);
}