#include<bits/stdc++.h>
#include "art.h"
using namespace std;
const int mxN = 4005;
vector<int>ANS, pos, v;
int n, QUERY = 0, last = -1;
int publish(vector<int>R);
// {
// QUERY++;
// int I = 0;
// for(int i = 0;i < n;++i){
// for(int j = i + 1;j < n;++j){
// I += (pos[R[i]] > pos[R[j]]);
// }
// }
// return I;
// }
void answer(vector<int>R);
// {
// for(int i = 0;i < n;++i){
// if(R[i] != ANS[i]){
// cout << "ERRRR" << endl;
// for(int j : R){
// cout << j << ' ';
// }
// cout << endl;
// return;
// }
// }
// }
int NEXT(){
vector<int>temp;
for(int i = 1;i < n;++i){
temp.push_back(v[i]);
}
temp.push_back(v[0]);
v = temp;
int temp2 = publish(v);
int D = last - temp2;
last = temp2;
return (D + n - 1) / 2;
}
vector<int>gen(int n){
vector<int>perm(n);
for(int i = 1;i <= n;++i){
perm[i - 1] = i;
}
for(int i = 0;i < 1000;++i){
int a = rand() % n;
int b = rand() % n;
swap(perm[a], perm[b]);
}
return perm;
}
void solve(int N){
n = N;
ANS = gen(n);
pos.resize(n + 1);
v.resize(n);
for(int i = 0;i < n;++i){
pos[ANS[i]] = i;
v[i] = i + 1;
}
last = publish(v);
vector<int>res(n);
for(int i = 1;i < n;++i){
res[NEXT()] = i;
}
for(int i = 0;i < n;++i){
if(res[i] == 0)res[i] = n;
}
answer(res);
// cout << QUERY << '\n';
}
// int main(){
// srand(time(0));
// ios_base::sync_with_stdio(0);
// cin.tie(0);
// int N;
// cin >> N;
// solve(N);
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |