Submission #726500

#TimeUsernameProblemLanguageResultExecution timeMemory
726500abcvuitunggioPermutation (APIO22_perm)C++17
10 / 100
1077 ms1216 KiB
#include "perm.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> construct(long long k, int base){
    vector <int> v;
    multiset <int> s;
    for (int i=0;i<base;i++){
        v.push_back(0);
        s.insert(1);
        k--;
    }
    v.pop_back();
    while (k){
        int res=-1;
        long long sum=0;
        for (int i:s){
            if (sum+i>k)
                break;
            sum+=i;
            res++;
        }
        k-=sum;
        v.push_back(res);
        s.insert(sum);
    }
    return v;
}
std::vector<int> construct_permutation(long long k)
{
    if (k==1)
        return {};
    if (k==2)
        return {0};
    int ch[1001];
    memset(ch,0,sizeof(ch));
    vector <int> v2=construct(k,2);
    vector <int> v3=construct(k,3);
    vector <int> res;
    if (v2.size()>v3.size())
        res=v3;
    else
        res=v2;
    for (int i=res.size()-1;i>=0;i--){
        int cnt=0;
        res[i]++;
        while (res[i]){
            cnt++;
            if (!ch[cnt])
                res[i]--;
        }
        res[i]=cnt-1;
        ch[cnt]=1;
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...