Cod sursa(job #526948)

Utilizator icepowdahTudor Didilescu icepowdah Data 29 ianuarie 2011 23:58:25
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;

#define MAXN 18

ifstream f("combinari.in");
ofstream g("combinari.out");
int solution[MAXN+1];
int inCombinare;

void gen_combinari(int n, int k, int step);

int main(void)
{
  int n, k;  

  f >> n >> k;

  gen_combinari(n, k, 0);

  f.close();
  g.close();
  return 0;
}

void gen_combinari(int n, int k, int step)
{
  if (step == k)
  {
    for (int i=1;i<=k;i++)
    {
      g << solution[i] << " ";
    }
    g<<"\n";
  }
  else
  {
    step++;
    for (int i=solution[step-1]+1;i<=n;i++)
    {
      if (!((inCombinare>>i)&1))
      {
        solution[step] = i;
        inCombinare |= (1<<i);
        gen_combinari(n,k,step);
        inCombinare ^= (1<<i);
      }
    }
  }
}