Cod sursa(job #2417235)

Utilizator avtobusAvtobus avtobus Data 29 aprilie 2019 12:11:24
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <bits/stdc++.h>

#define rep(i, n) for(int i = 0; i < n; i++)
#define REP(i,a,b) for(int i = a; i < b; i++)

using namespace std;
typedef pair<int, int> pii;
const int INF = 0x3f3f3f3f;

ifstream fin ("combinari.in");
ofstream fout ("combinari.out");

const int Nmax = 22;
int N, K;
char used[Nmax];

void write() {
  for(int i = 1; i <= N; ++i)
    if (used[i])
      fout << i << ' ';
  fout << '\n';
}

void combinari(int begin, int end, int count) {
  if (!count) {
    write();
    return;
  }
  if (begin + count > end) {
    return;
  }
  // use begin
  used[begin] = 1;
  combinari(begin+1, end, count-1);
  // skip begin
  used[begin] = 0;
  combinari(begin+1, end, count);
}

int main(void) {
  fin >> N >> K;

  combinari(1, N+1, K);

  return 0;
}