Cod sursa(job #254748)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 7 februarie 2009 13:57:45
Problema Planeta Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.95 kb
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>

using namespace std;

vector <int> V;

int verif(int l, int r){
    int i, poz, j;
    if (l >= r)
        return 1;
    for (i = l + 1; i <= r && V[i] < V[l]; ++i);
    //fprintf(stderr, "%d\n", i);
    for (j = i + 1; j <= r; ++j)
        if (V[j] < V[l])
            return 0;
    //return 1;
    return verif(l + 1, i) & verif(i + 1, r);
}
int main(){
	int i, K, N, x;

	freopen("planeta.in", "r", stdin);
	freopen("planeta.out", "w", stdout);

	scanf("%d%d", &N, &K);

	for (i = 1; i <= N; ++i)
		V.push_back(i);

	i = 0;

	while (i < K){
		//for (i = 0; i < N; ++i)
            //fprintf(stderr, "%d ", V[i]);
		x = verif(0, N - 1);
		i += x;
		//printf("%d ", x);
		//fprintf(stderr,"%d %d %d %d ", verif(0,N - 1), verif(1, N - 1));
		//fprintf(stderr, "%d\n", i);
		if (i == K)
            break;
		next_permutation(V.begin(), V.end());
	}

	for (i = 0; i < N; ++i)
		printf("%d ", V[i]);
}