Cod sursa(job #466464)

Utilizator cont_de_testeCont Teste cont_de_teste Data 26 iunie 2010 18:02:53
Problema Permutari2 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cassert>
#include <cstdio>
#include <algorithm>
using namespace std;

const int MAX_N = 302;

int n, k;
int v[MAX_N];

int main() {
    assert(freopen("permutari2.in", "r", stdin) != NULL);
    assert(freopen("permutari2.out", "w", stdout) != NULL);

    assert(scanf("%d %d", &n, &k) == 2);

    for (int i = 0; i < n; ++i)
        v[i] = i;

    int sol = 0;
    do {
        int maxVal = -1, card = 0;
        for (int i = 0; i < n; ++i) {
            maxVal = max(maxVal, v[i]);
            if (maxVal == i) ++card;
        }
        if (card == k) ++sol;
    } while (next_permutation(v, v + n));
    printf("%d\n", sol % 10007);
}