Cod sursa(job #554157)
#include <fstream>
using namespace std;
int n, a[19], k;
ifstream fi("combinari.in");
ofstream fo("combinari.out");
// La fiecare apel se stabileste o valoare in sir.
void comb (int l) { // se va pune o valoare pe locul l
int i, linf, lsup; // variabila locala, memorata separat pentru fiecare apel
if (l <= k) { // conditie care "protejeaza"
linf = a[l-1] + 1; lsup = n - k + l;
for (i = linf; i <= lsup; i++) { // i este valoarea care se pune pe locul l
a[l] = i;
comb (l + 1); // la pasul urmator vom pune valoare pe locul l+1
}
}
else {
for (i = 1; i <= k; i++)
fo << a[i] << ' ';
fo << '\n';
}
}
int main () {
fi >> n >> k;
comb (1); // mai intai punem o valoare pe locul 1 din k-uplu
return 0;
}
/*
#include <fstream>
using namespace std;
int nl, nc, l, c, clu, aux, l1, l2;
long s[3][252], ss, sp;
int a[252][252];
ifstream fi("lacusta.in");
ofstream fo("lacusta.out");
int main () {
fi >> nl >> nc;
for (l = 1; l <= nl; l++)
for (c = 1; c <= nc; c++)
fi >> a[l][c];
s[1][1] = 2000000000; // ca sa nu se coboare pe coloana 1, fara sa se faca un salt pe linia 1
for (c = 2; c <= nc; c++) // prima linie se actualizeaza separat_
s[1][c] = a[1][1] + a[1][c]; // pentru ca nu se actualizeaza prin pas+salt
l1 = 1; l2 = 2;
for (l = 2; l <= nl; l++) { // a[l-1][c] isi va actualiza vecinii prin succesiunea pas+salt.
for (c = 1; c <= nc; c++)
s[l2][c] = 2000000000;
for (c = 1; c <= nc; c++) { // coloana pe care se face coborarea
sp = s[l1][c] + a[l][c]; // suma corespunzatoare pasului de coborare
for (clu = 1; clu <= nc; clu++) // coloana din linia urmatoare
if (clu != c) { // Nu se actualizeaza daca se coboara fara a se face si salt.
ss = sp + a[l][clu]; // suma pentru saltul pe linia l
if (s[l2][clu] > ss) // ss mai mic decat minimul curent de pe coloana clu.
s[l2][clu] = ss; // Actualizam minimul.
}
}
aux = l1; l1 = l2; l2 = aux; // Interschimbam cele doua linii utilizate
}
fo << s[l1][nc];
return 0;
}
// 70 de puncte (30 acordate) daca se lucreaza cu matrici de int pentru a si s.
// Timpul este la limita!
*/