제출 #1322477

#제출 시각아이디문제언어결과실행 시간메모리
1322477NValchanovArt Collections (BOI22_art)C++20
50 / 100
327 ms436 KiB
#include <vector> #include "art.h" using namespace std; int n; int p; vector < int > a; vector < int > tmp; vector < int > ans; bool cmp(int x, int y) { vector < int > cur(n); for(int i = 0; i < n; i++) { cur[i] = i + 1; } swap(cur[x - 1], cur[y - 1]); int curp = publish(cur); return curp >= p; } void mergeSort(int left, int right) { if(left == right) return; int mid = left + (right - left) / 2; mergeSort(left, mid); mergeSort(mid + 1, right); for(int i = left; i <= right; i++) { tmp[i] = a[i]; } int ptrl = left; int ptrr = mid + 1; int ptr = left; while(ptrl <= mid && ptrr <= right) { if(cmp(tmp[ptrl], tmp[ptrr])) { a[ptr++] = tmp[ptrl++]; } else { a[ptr++] = tmp[ptrr++]; } } while(ptrl <= mid) a[ptr++] = tmp[ptrl++]; while(ptrr <= right) a[ptr++] = tmp[ptrr++]; } void solve(int N) { n = N; a.resize(n); tmp.resize(n); ans.resize(n); for(int i = 0; i < n; i++) { a[i] = i + 1; } p = publish(a); mergeSort(0, n - 1); for(int i = 0; i < n; i++) { ans[i] = a[i]; } answer(ans); }
#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...