Submission #1237787

#TimeUsernameProblemLanguageResultExecution timeMemory
1237787IrateArt Collections (BOI22_art)C++20
100 / 100
763 ms536 KiB
#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 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...
#Verdict Execution timeMemoryGrader output
Fetching results...