kswap

Time limit: 0.03s Memory limit: 8MB Input: kswap.in Output: kswap.out

Fie A=(a1,a2,,aN)A = (a_1, a_2, \dots, a_N) o permutare a mulțimii {1,2,,N}\{1, 2, \dots, N\}.
Permutarea AA o numim KK-swap dacă prin aplicarea algoritmului de sortare bubble-sort sunt necesare exact KK swapuri (interschimbări) pentru ca aceasta să devină permutarea identică.
Reamintim algoritmul bubble-sort:

do {
	ok = 1;
	for (int i = 1; i < N; i++)
		if (a[i] > a[i + 1]) {
			swap(a[i], a[i + 1]);
			ok = 0;
		}
} while (ok == 0);

Cerinţă

Pentru NN și KK dat să se determine numărul de permutări KK-swap ale mulțimii {1,2,,N}\{1, 2, \dots, N\}.
Exemplu: pentru N=3N = 3 și K=2K = 2, dintre permutările {1,2,3}\{1, 2, 3\}, {1,3,2}\{1, 3, 2\}, {2,1,3}\{2, 1, 3\}, {2,3,1}\{2, 3, 1\}, {3,1,2}\{3, 1, 2\}, {3,2,1}\{3, 2, 1\}, permutările 22-swap sunt următoarele: {2,3,1}\{2, 3, 1\}, {3,1,2}\{3, 1, 2\}.

Date de intrare

Fişierul de intrare kswap.in conţine pe prima linie două numere naturale nenule N KN \ K separate prin câte un spaţiu, cu semnificația descrisă anterior.

Date de ieşire

Pe prima linie a fişierului de ieşire kswap.out se va scrie un singur număr natural MM ce reprezintă numărul de permutări KK-swap, modulo 3010330103 ale mulțimii {1,2,,N}\{1, 2, \dots, N\}.

Restricţii şi precizări

  • 1N1501 \leq N \leq 150
  • 1KN×(N1)/21 \leq K \leq N \times (N - 1) / 2
  • Prin permutarea identică înțelegem permutarea {1,2,,N}\{1, 2, \dots, N\}

Exemple

kswap.in

4 5

kswap.out

3

Explicaţie

Permutările mulțimii {1,2,3,4}\{1, 2, 3, 4\} sunt: {1,2,3,4}\{1, 2, 3, 4\}, {1,2,4,3}\{1, 2, 4, 3\}, {1,3,2,4}\{1, 3, 2, 4\}, {1,3,4,2}\{1, 3, 4, 2\}, {1,4,2,3}\{1, 4, 2, 3\}, {1,4,3,2}\{1, 4, 3, 2\}, {2,1,3,4}\{2, 1, 3, 4\}, {2,1,4,3}\{2, 1, 4, 3\}, {2,3,1,4}\{2, 3, 1, 4\}, {2,3,4,1}\{2, 3, 4, 1\}, {2,4,1,3}\{2, 4, 1, 3\}, {2,4,3,1}\{2, 4, 3, 1\}, {3,1,2,4}\{3, 1, 2, 4\}, {3,1,4,2}\{3, 1, 4, 2\}, {3,2,1,4}\{3, 2, 1, 4\}, {3,2,4,1}\{3, 2, 4, 1\}, {3,4,1,2}\{3, 4, 1, 2\}, {3,4,2,1}\{3, 4, 2, 1\}, {4,1,2,3}\{4, 1, 2, 3\}, {4,1,3,2}\{4, 1, 3, 2\}, {4,2,1,3}\{4, 2, 1, 3\}, {4,2,3,1}\{4, 2, 3, 1\}, {4,3,1,2}\{4, 3, 1, 2\}, {4,3,2,1}\{4, 3, 2, 1\}.
Doar 33 dintre acestea sunt permutări 55-swap: {3,4,2,1}\{3, 4, 2, 1\}, {4,2,3,1}\{4, 2, 3, 1\}, {4,3,1,2}\{4, 3, 1, 2\}

Log in or sign up to be able to send submissions!