Cod sursa(job #1017688)
| Utilizator | Data | 28 octombrie 2013 09:24:54 | |
|---|---|---|---|
| Problema | Combinari | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.94 kb |
#include <fstream>
#define m 1000
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int s[m];
void print(int k)
{
for(int i=0;i<k;i++)
{
g<<s[i]+1<<" ";
}g<<endl;
}
bool ok(int p)
{
for(int i=0;i<p;++i)
{
if(s[p]<=s[i])
return false;
}
return true;
}
void combinari(int n,int k)
{int p=1;
for(;p>=0;)
{
if(s[p]<n)
{
++s[p];
if(ok(p))
{
if(p==k)
{
print(k);
p--;
}
else
{
++p;
s[p]=0;
}
}
}
else
{
--p;
}
}
}
int main()
{int n,k;
f>>n>>k;
combinari(n,k);
f.close();
g.close();
return 0;
}
