Pagini recente » Cod sursa (job #2594644) | Cod sursa (job #1412356) | Cod sursa (job #1431542) | Cod sursa (job #3229821) | Cod sursa (job #623163)
Cod sursa(job #623163)
# include <cstdio>
# include <cmath>
using namespace std;
const char *FIN = "combinari.in", *FOU = "combinari.out";
const int MAX = 105;
int N, K, P, st[MAX];
bool as, ev;
void init (int K, int *st) {
st[K] = 0;
}
void succesor (bool &as, int *st, int K) {
if (st[K] < N) {
++st[K], as = 1;
} else {
as = 0;
}
}
void valid (bool &ev, int *st, int K) {
ev = 1;
for (int i = 1; i < K; ++i)
if (st[i] == st[K] || st[i] >= st[K]) {
ev = 0; return ;
}
}
int sol (int K) {
return K == P;
}
void tipar (int *st) {
for (int i = 1; i <= P; ++i)
printf ("%d ", st[i]);
printf ("\n");
}
int main (void) {
fscanf (fopen (FIN, "r"), "%d %d", &N, &P);
freopen (FOU, "w", stdout);
for (init (K = 1, st); K; ) {
do {
succesor (as, st, K);
if (as) valid (ev, st, K);
} while (as && (!as || !ev));
if (as) {
if (sol (K)) tipar (st);
else init (++K, st);
} else --K;
}
}