Submission #1310272

#TimeUsernameProblemLanguageResultExecution timeMemory
1310272settopPermutation (APIO22_perm)C++20
91.33 / 100
4 ms576 KiB
#include<bits/stdc++.h>
//#include "perm.h"

using namespace std;
#define ll long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define sz(x) (int)x.size()
#define pb push_back

vector<int> construct_permutation(long long k){
    vector<int> ans={0};
    vector<ll> pref={1};
    k-=2;

    int n=1;
    while(k){
        bool ok=0;

        rfall(i,n-1,0){
            if(pref[i]+1<=k){
                ok=1;
                k-=(pref[i]+1);
                vector<int> aux;
                vector<ll> pf;
                fall(j,0,i) aux.pb(ans[j]),pf.pb(pref[j]);
                aux.pb(n); pf.pb(2*pref[i]+1);
                fall(j,i+1,n-1) aux.pb(ans[j]),pf.pb(pref[j]+pref[i]+1);

                ans=aux,pref=pf;

                n++;

                break;
            }
        }

        if(ok) continue;

        k--;

        vector<int> aux={n};
        vector<ll> pf={1};
        for(auto u:ans) aux.pb(u);
        for(auto u:pref) pf.pb(u+1);

        ans=aux,pref=pf;

        n++;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...