Cod sursa(job #711176)

Utilizator FayedStratulat Alexandru Fayed Data 11 martie 2012 15:45:44
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<fstream>
using namespace std;

short n,ST[18],k;
bool as,ev;
short p;
void init()
{
    ST[k]=0;
}

void succ()
{
    if(ST[k]<n)
 {
     ST[k]++;
 as=1;
 }
 else as=0;
}

void valid()
{
    ev=1;
 for(short i=1;i<k;i++)
    if(ST[i]==ST[k])
ev=0;
for(short i=1;i<k;i++)
if(ST[i]>=ST[i+1])
ev=0;
}

void tipar()
{
    for(short i=1;i<=k;i++)
  printf("%d ",ST[i]);
printf("\n");
}

int sol()
{
    return (k==p);
}

void back()
{
    k=1;
 init();
    while(k)
{
  do{
  succ();
  if(as)
  valid();
  }
while(as && !ev);

      if(as) if(sol())
      tipar();
  else{
  k++; init();
  }
    else k--;
    }
}

int main()
{
  freopen("combinari.in","r",stdin);
  freopen("combinari.out","w",stdout);

scanf("%d %d",&n,&p);
    back();
    return 0;
}