Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Kombinacje
(kombinacje)
Limit pamięci: 32 MB
Limit czasu: 8.00 s

Powszechnie wiadomo, że liczba K-elementowych kombinacji zbioru N elementów jest równa $${N \choose K} = \frac{N!}{K! \cdot (N-K)!}$$ W tym zadaniu należy sprawdzić to doświadczalnie – tj. wypisać wszystkie te kombinacje.

Dla przypomnienia: kombinacją K-elementową zbioru N elementowego nazywamy dowolny K-elementowy podzbiór tego zbioru (kolejność wyrazów nie ma znaczenia). Na przykład wszystkie dwuelementowe kombinacje zbioru {1, 2, 3, 4} to: {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}.

Napisz program, który wczyta N i K i wypisze wszystkie K elementowe kombinacje zbioru N-elementowego.

Wejście

W pierwszym (i jedynym) wierszu wejścia znajdują się dwie liczby naturalne N i K, oddzielone pojedynczym odstępem.

Wyjście

Należy wypisać wszystkie szukane kombinacje zgodnie z kolejnością leksykograficzną. Elementy kombinacji mają być pooddzielane pojedynczymi odstępami, zaś kolejne kombinacje muszą być wypisane w kolejnych liniach.

Ograniczenia

1 ≤ K ≤ N ≤ 50.

Dane testowe będą dobrane w taki sposób, aby liczba kombinacji w każdym przypadku testowym nie przekroczyła miliona.

W testach wartych łącznie 55% maksymalnej punktacji zachodzi dodatkowy warunek: N ≤ 20.

Przykład

Wejście Wyjście
4 2
1 2 
1 3 
1 4 
2 3 
2 4 
3 4 
Wejście Wyjście
3 1
1 
2 
3 
Wejście Wyjście
3 3
1 2 3