Cod sursa(job #2470406)

Utilizator stormy_weatherelena cristina stormy_weather Data 9 octombrie 2019 10:26:30
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;

int generate_comb(int count, int k, vector<int> &cur_comb, vector<int> &options, vector<vector <int>> &comb) {
  if (count == k + 1) {
    comb.push_back(cur_comb);
    return 1;
  }

  if ((int)options.size() < k - count)
    return 1;

  for (int i = 0; i < (int)options.size(); i++) {
    vector<int> new_comb= cur_comb;
    new_comb.push_back(options[i]);

    vector<int> new_options(options.begin() + i + 1, options.end());

    generate_comb(count + 1, k, new_comb, new_options, comb);
  }
  return 1;
}

int main() {
  #ifdef INFOARENA
  ifstream cin("combinari.in");
  ofstream cout("combinari.out");
  #endif

  int n, k; cin >> n >> k;
  vector<vector <int>> comb;
  vector<int> cur_comb;
  vector<int> options(n);
  for (int i = 1; i <= n; i++)
    options[i - 1] = i;

  generate_comb(1, k, cur_comb, options, comb);
  for (int i = 0; i < (int)comb.size(); i++) {
    for (int j = 0; j < k; j++)
      cout << comb[i][j] << " ";
    cout << "\n";
  }
  return 0;
}