Submission #1188954

#TimeUsernameProblemLanguageResultExecution timeMemory
1188954herissonwowwArt Collections (BOI22_art)C++20
100 / 100
770 ms472 KiB
#include "art.h" #include <bits/stdc++.h> using namespace std; //void MergeSort(vector<int> v, int left, int right){ // if(left>=right) // return; // int mid = left+(right-left)/2; // MergeSort(v, left, mid); // MergeSort(v, mid+1, right); // merge_part(v, left, mid, right); //} //void merge_part(vector<int>v, int left, int mid, int right){ // int n1 = mid-left+1; // int n2 = right-mid; // //} void solve(int n) { vector <int> vals(n); for(int i = 0; i < n; i++){ vals[i] = i+1; } int k1 = publish(vals); for(int i = 1; i < n; i++){ vector <int> valstemp = vals; for(int j = i-1; j >= 0 ; j--){ swap(valstemp[j], valstemp[j + 1]); } int k2 = publish(valstemp); int b = (k2-k1+i)/2; int a = i-b; int newpos = b; for(int j = 1;j <= b;j++) swap(valstemp[j - 1], valstemp[j]); swap(vals, valstemp); k1 = k1-a; } answer(vals); // if(1==1){ // int k = publish(vals); // cout << k << endl; // vals = {2,1,3,4,5}; // k = publish(vals); // cout << k << endl; // vals = {2,3,1,4,5}; // k = publish(vals); // cout << k << endl; // vals = {2,3,4,1,5}; // k = publish(vals); // cout << k << endl; // vals = {2,3,4,5,1}; // k = publish(vals); // cout << k << endl; // return; // } // if(n <= 6){ // do { // int k = publish(vals); // if(k==0){ // answer(vals); // return; // } // } while (next_permutation(vals.begin(), vals.end())); // // assert(0); // } // if(n<=40){ // for(int i = 0; i < n-1; i++){ // for(int j = 0; j < n-1; j++){ // int kfirst = publish(vals); // swap(vals[j],vals[j+1]); // int ksecond = publish(vals); // if(kfirst < ksecond){ // swap(vals[j],vals[j+1]); // } // } // } // answer(vals); // return; // } // int p = 0; // int k1 = publish(vals); // // valstemp[n-1] = vals[0]; // for(int i = 0; i < n-1; i++){ // valstemp[i] = vals[i+1]; // } // int k2 = publish(valstemp); // int b = (k2-k1+p-1)/2; // int a = p-1-b; // int newpos = b+1; // // for(int i = newpos+1; i < newpos+a; i++){ // valstemp[i] = valstemp[i-1]; // } // valstemp[newpos] = vals[p]; // publish(valstemp); // cout << k1 << ' ' << k2 << ' ' << p << 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...
#Verdict Execution timeMemoryGrader output
Fetching results...