Pagini recente » Cod sursa (job #1834815) | Cod sursa (job #2712429) | Cod sursa (job #43958) | Cod sursa (job #2459847) | Cod sursa (job #2899597)
#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;
}