이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include <perm.h>
using ll = long long;
//#define int ll
using namespace std;
#define sz(x) (int)(x).size()
#define foru(i, l, r) for(int i = l; i <= r; i++)
#define ford(i, l, r) for(int i = l; i >= r; i--)
#define fi first
#define se second
#define mod 998244353
#define db(x) cerr << __LINE__ << " " << #x << " " << x << "\n"
using vi = vector<int>;
using pi = pair<int, int>;
const int N = 200005;
const ll inf = 2e18;
ll calc(vi v){
vector<ll> f(sz(v));
ll sum = 1;
foru(i, 0, sz(v) - 1){
f[i] = 1;
foru(j, 0, i - 1){
if(v[j] < v[i]) f[i] += f[j];
f[i] = min(f[i], inf);
}
sum += f[i]; sum = min(sum, inf);
}
return sum;
}
vi construct_permutation(ll k){
if(k == 1) return {};
if(k == 2) return {0};
if(k == 3) return {1, 0};
auto res = construct_permutation(k / 4);
int s = sz(res);
if(k % 4 == 0){
res.push_back(s);
res.push_back(s + 1);
return res;
}
if(k % 4 == 1){
res.push_back(s);
res.push_back(s + 1);
res.push_back(-1);
for(auto &x : res) x++;
return res;
}
if(k % 4 == 2){
res.push_back(s);
res.push_back(-1);
res.push_back(s + 1);
for(auto &x : res) x++;
return res;
}
auto z = res;
res.push_back(s);
res.push_back(s + 1);
for(auto &x : res) if(x > 1) x++;
res.push_back(2);
if(calc(res) == k) return res;
for(auto &x : z) x += 2;
z.push_back(s + 2);
z.push_back(1);
z.push_back(s + 3);
z.push_back(0);
return z;
}
/*void solve(){
int q; cin >> q;
while(q--){
int k; cin >> k;
for(auto x : construct_permutation(k)){
cout << x << " ";
}
cout << "\n";
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int t = 1; // cin >> t;
while(t--){
solve();
}
}*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |