Pagini recente » Floare | Istoria paginii utilizator/vladvaldez | Diferente pentru calibrare-limite-de-timp intre reviziile 188 si 189 | Aquapark | Cod sursa (job #1010808)
#include<iostream>
#include<fstream>
#include<cstdio>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
int n,k,st[20],kk,ap[20];
inline void Citire()
{
freopen("combinari.in","r",stdin);
freopen("combinari.out","w",stdout);
scanf("%d%d",&n,&k);
}
inline void Afisare(int s)
{
int i;
for (i=1;i<=k;i++)
printf("%d ",st[i]);
printf("\n");
}
inline int Validare(int b)
{
if (ap[b]==1)
return 0;
if (st[b]<=st[b-1] && b>1)
return 0;
ap[st[kk]]=1;
return 1;
}
inline void Rezolva()
{
int cand;
kk=1;
st[kk]=0;
while (kk>0)
{
cand=0;
while (!cand && st[kk]<n)
{
st[kk]++;
ap[st[kk]-1]=0;
cand=Validare(kk);
}
if (!cand)
{kk--;ap[kk+1]=0;}
else if (kk==k)
Afisare(kk);
else {kk++,st[kk]=0;}
}
}
int main()
{
Citire();
Rezolva();
return 0;
}