Cod sursa(job #1424122)

Utilizator RanKBrinduse Alexandru RanK Data 23 aprilie 2015 15:37:00
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#include <stdlib.h>

#define IN_FILE_NAME "prezenta.in"
#define OUT_FILE_NAME "prezenta.out"

#define MAGIC_MODULO 10007

int arr[130];
bool used[130];
int gK = 0;
int gSolution = 0;

void Solve(int level, int n, int k)
{
	if(level == n)
	{
		if(k == gK)
			gSolution = (gSolution+1)%MAGIC_MODULO;
		return;
	}

	if(gK - k > n-level)
		return;

	int i;
	for(i=0; i<n-1; i++)
	{
		if(used[i])
			continue;

		used[i] = true;
		arr[level] = i;
		int nextK = k;
		if(arr[level-1] > arr[level])
			nextK+=1;
		if(nextK > gK)
			continue;
		Solve(level+1, n, nextK);
		used[i] = false;
	}
}

int main()
{
	int tests = 0, t = 0;

	freopen(IN_FILE_NAME, "r", stdin);
	freopen(OUT_FILE_NAME, "w", stdout);

	tests = 30;
	for(t=0; t<tests; t++)
	{
		arr[0] = -1;
		gSolution = 0;
		gK = 60;

		Solve(1, 127+1, 0);
	}
	return 0;

	scanf("%d", &tests);
	for(t=0; t<tests; t++)
	{
		int n, k;
		scanf("%d %d", &n, &k);
		arr[0] = -1;
		gSolution = 0;
		gK = k;

		Solve(1, n+1, 0);
		printf("%d\n", gSolution);
	}

	return 0;
}