제출 #918494

#제출 시각아이디문제언어결과실행 시간메모리
918494tuannm순열 (APIO22_perm)C++17
10 / 100
1008 ms712 KiB
#include<bits/stdc++.h> #include "perm.h" #define pb push_back using namespace std; vector<int> construct_permutation(long long k){ vector<int> ans; for(long long N = k; N <= k + 500; ++N){ if(N % 2 != 0) continue; multiset<int> tmp; vector<int> v; for(int i = 1; (1LL << i) <= N; ++i){ if(N & (1LL << i)) tmp.insert(i); } if((int)tmp.size() > N - k + 1) continue; bool ok = true; while((int)tmp.size() < N - k + 1){ auto it = tmp.lower_bound(2); if(it == tmp.end()){ ok = false; break; } tmp.erase(it); int add = *it - 1; tmp.insert(add); tmp.insert(add); } if(!ok) continue; int m = 0; for(auto i : tmp) m += i; for(auto i : tmp){ vector<int> tttt; for(int j = 1; j <= i; ++j) tttt.pb(--m); reverse(tttt.begin(), tttt.end()); for(auto j : tttt) v.pb(j); } if(ans.empty() || (int)ans.size() > (int)v.size()) ans = v; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...