Submission #1212296

#TimeUsernameProblemLanguageResultExecution timeMemory
1212296jasonicPermutation (APIO22_perm)C++20
86.63 / 100
2 ms584 KiB
#include "perm.h" #include <bits/stdc++.h> using namespace std; #define ll long long int mn, mx; void pushMin(vector<int> &vec) { vec.push_back(mn); if(mn == mx) { mx++; } mn--; } void pushMax(vector<int> &vec, int cnt) { for(int i = cnt+mx-1; i >= mx; i--) { vec.push_back(i); } if(mn == mx) { mn--; } mx += cnt; } vector<int> solve(ll k) { vector<int> res; if(k == 2) { pushMin(res); } else if (k != 1) { for(auto prime : {41, 37, 31, 29, 23, 19, 17, 13, 11, 7, 5, 3, 2}) { if(k % prime == 0) { res = solve(k/prime); pushMax(res, prime-1); return res; } } res = solve(k-1); pushMin(res); } return res; } vector<int> construct_permutation(ll k) { mn = 0, mx = 0; vector<int> res = solve(k); int mn = 0; for(auto &i : res) mn = min(mn, i); for(auto &i : res) i -= mn; return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...