제출 #638494

#제출 시각아이디문제언어결과실행 시간메모리
638494TranGiaHuy1508순열 (APIO22_perm)C++17
100 / 100
2 ms340 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; namespace { vector<int> primes = {2, 3, 5, 7}; deque<int> q; int lim; void mult(int x){ if (x == 7){ q.push_back(lim + 3); q.push_back(lim + 1); q.push_back(lim); q.push_back(lim + 2); lim += 4; return; } else if (x == 5){ q.push_back(lim + 2); q.push_back(lim); q.push_back(lim + 1); lim += 3; return; } for (int i = lim + x - 2; i >= lim; i--){ q.push_back(i); } lim += x - 1; } void add1(){ q.push_front(lim++); } void solve(ll k){ if (k == 1) return; for (int i = 0; i < (int)primes.size(); i++){ if (k % primes[i] == 0){ solve(k / primes[i]); mult(primes[i]); return; } } solve(k - 1); add1(); return; } } vector<int> construct_permutation(ll k){ lim = 0; solve(k); vector<int> v; while (!q.empty()){ v.push_back(q.front()); q.pop_front(); } return v; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...