제출 #1296500

#제출 시각아이디문제언어결과실행 시간메모리
1296500eri16순열 (APIO22_perm)C++20
10 / 100
11 ms1856 KiB
#include <bits/stdc++.h> #include "perm.h" using namespace std; using ll = long long; long long fact(int n){ long long r = 1; for (int i = 2; i <= n; i++) r *= i; return r; } vector<int> construct_permutation(long long k){ if (k<=2000){ vector <int> v; for (int i=k-2; i>=0; i--){ v.push_back(i); } return v; } vector <ll> f; f.push_back(0); f.push_back(0); int c=1; while (f[c]<1e18){ c++; f.push_back(f[c-1]+fact(c-1)); } ll cur=1998; vector <int> v; while (k>2000){ for (int i=20; i>=0; i--){ if (k-f[i]>=2000){ k=k-f[i]; cur=cur-i+1; v.push_back(cur); cur--; break; } } } vector <int> vv; int tt=0,tp=1998; while (tt<v.size()){ for (int i=v[tt]; i<=tp; i++){ vv.push_back(i); } tp=v[tt]-1; tt++; } for (int i=tp; i>=0; i--){vv.push_back(i);} return vv; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...