Cod sursa(job #2972661)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 29 ianuarie 2023 22:34:34
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#include <memory>
#include <vector>

using namespace std;

class Solver{
private:
  int N, K; // N choose K
  vector<int> v;
public:
  Solver() {
    freopen("combinari.in", "r", stdin);
    freopen("combinari.out", "w", stdout);
  }

  ~Solver() {
    fclose(stdin);
    fclose(stdout);
  }
  
  void readData() {
    scanf("%d%d", &N, &K);
  }

  void printNchooseK() {
    for (int i = 1; i <= K; ++i)
      printf("%d ", v[i]);
    printf("\n");
  }
  
  void backtrack(int k) {
    for (v[k] = v[k-1] + 1; v[k] <= N; ++v[k])
      if (k == K)
	printNchooseK();
      else
	backtrack(k+1);
  }
  
  void solve() {
    v.resize(N + 1);
    backtrack(1);
  }
};

int main()
{
  unique_ptr<Solver> s = make_unique<Solver>();
  s->readData();
  s->solve();
  return 0;
}