Submission #1012782

#TimeUsernameProblemLanguageResultExecution timeMemory
1012782codefoxPermutation (APIO22_perm)C++17
0 / 100
0 ms348 KiB
#include<bits/stdc++.h>
#include "perm.h"

using namespace std;

std::vector<int> construct_permutation(long long k)
{
    int l = 0;
    for (int i = 62; i>= 0; i--)
    {
        if (k&(1LL<<i)) l =max(l,i);
    }
    vector<int> sol(l);
    iota(sol.begin(), sol.end(), 0);


    int added = 0;
    int d = l;
    for (int i = l-1; i >= 0; i--)
    {
        if (k&(1LL<<i))
        {
            if (i%2 && k&(1LL<<(i-1)) && added>=3)
            {
                i--;
                int h = 0;
                for (int j = sol.size()-1; j >= 0; j--)
                {
                    if (sol[j]>=l) 
                    {
                        sol[j]++;
                        h++;
                    }
                    if (h==3) break;
                }
                sol.push_back(0);
                for (int j = sol.size()-1; j > i; j--)
                {
                    sol[j] = sol[j-1];
                }
                sol[i] = d++ - 3;
            }
            else
            {
                sol.push_back(0);
                for (int j = sol.size()-1; j >i; j--)
                {
                    sol[j] = sol[j-1];
                }
                sol[i] = d++;
                added++;
            }
        }
    }
    return sol;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...