Cod sursa(job #959732)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 8 iunie 2013 17:01:33
Problema Combinari Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>
using namespace std;

int main (){

    freopen ("combinari.in", "r", stdin);
    freopen ("combinari.out", "w", stdout);
    int N, K, bin, lim, j, k, i, l;
    scanf ("%d%d", &N, &K);
    bin = (1 << K) - 1 + (1 << N);
    lim = (1 << N + 1) - (1 << N - K);
    while (bin < lim) {
        for (i = 0; i < N; ++i)
            if (bin >> i & 1)
                printf ("%d ", i + 1);
        printf ("\n");
        l = (bin ^ bin & (bin - 1)) - 1;
        bin += l;
        j = (1 << N + 1) - 1 - bin;
        k = j ^ j & (j - 1);
        bin += (k >> 1) - l;
    }
    for (i = 0; i < N; ++i)
        if (bin >> i & 1)
            printf ("%d ", i + 1);
}