제출 #1141522

#제출 시각아이디문제언어결과실행 시간메모리
1141522domblyArt Collections (BOI22_art)C++20
5 / 100
5 ms408 KiB
#include <bits/stdc++.h> #include "art.h" #define pb push_back using namespace std; int inv; vector<int>order; vector<int> Solve(int l,int r) { if(l == r) return {l}; int mid = l + r >> 1; vector<int>L = Solve(l,mid); vector<int>R = Solve(mid + 1,r); int ptr1 = 0,ptr2 = 0,n1 = L.size(),n2 = R.size(); vector<int>v; while(ptr1 < n1 || ptr2 < n2) { if(ptr1 == n1) { v.pb(R[ptr2++]); }else if(ptr2 == n2) { v.pb(L[ptr1++]); }else { assert(L[ptr1] - 1 >= 0 && L[ptr1] - 1 <= r); assert(R[ptr2] - 1 >= 0 && R[ptr2] - 1 <= r); swap(order[L[ptr1] - 1],order[R[ptr2] - 1]); int inv2 = publish(order); swap(order[L[ptr1] - 1],order[R[ptr2] - 1]); if(inv2 < inv) v.pb(R[ptr2++]); else v.pb(L[ptr1++]); } } return v; } void solve(int N) { for(int i = 1; i <= N; i++) order.pb(i); vector<int>sol = order; for(int i = 1; i <= 1000; i++) { random_shuffle(order.begin(),order.end()); if(publish(order) == 0) { sol = order; break; } } answer(sol); }
#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...