Submission #1112184

#TimeUsernameProblemLanguageResultExecution timeMemory
1112184PagodePaivaPermutation (APIO22_perm)C++17
10 / 100
1066 ms688 KiB
#include<bits/stdc++.h>
#include "perm.h"
 
using namespace std;
 
vector <int> solve(long long k){
    if(k == 1) return {};
    if(k%2 == 0){
        vector <int> ans = solve(k/2);
        ans.push_back(ans.size());
        return ans;
    }
    vector <int> ans = solve(k-1);
    for(auto &x : ans){
        x++;
    }
    ans.push_back(0);
    return ans;
}

vector <int> merge(vector <int> a, vector <int> b){
    int tam = b.size();
    for(auto &x : a){
        x += tam;
    }
    for(auto x : b){
        a.push_back(x);
    }
    return a;
}

vector <int> ssolve(long long k){
    vector <int> v = solve(k);
    for(int i = 1;i <= min(k-1, 10010LL);i++){
        vector <int> aux = merge(solve(i), solve(k-i+1));
        if(aux.size()< v.size()) v = aux;
    }
    return v;
}

vector<int> construct_permutation(long long k){
    vector <int> ans = ssolve(k);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...