Cod sursa(job #2899597)

Utilizator Rares_StefanoiuRares Stefanoiu Rares_Stefanoiu Data 8 mai 2022 22:59:50
Problema Planeta Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
using namespace std;
ofstream g("planeta.out");
vector<int>v;
int i, c, k;

int check(int st, int dr) {
    int x;
    if (st >= dr)
        return 1;
    i = st + 1;
    while (i <= dr and v[st] > v[i])
        i++;
    x = i;
    i++;
    while (i <= dr)
    {
        if (v[st] > v[i])
            return 0;
        i++;
    }
    return check(st + 1, x - 1) and check(x, dr);
}




void preorder(int n) {
    for (i = 1; i <= n; i++)
        v.push_back(i);
    if (check(0, n - 1))
    {
        c++;
    }
    while (next_permutation(v.begin(), v.end())) {
        if(c==k)
            return;
        if (check(0, n - 1))
        {
            c++;
            if (c == k)
            {
                for (i = 0; i < v.size(); i++)
                    g << v[i] << " ";
                return;
            }
        }
      
    }
}

int main() {
    int n;
    ifstream f("planeta.in");
    f >> n >> k;
    preorder(n);
    return 0;
}