Pagini recente » Cod sursa (job #2429079) | Cod sursa (job #269024) | Cod sursa (job #1594181) | Cod sursa (job #117832) | Cod sursa (job #162098)
Cod sursa(job #162098)
// http://infoarena.ro/problema/combinari
#include <stdio.h>
int st[18];
int N, K;
void init( char k )
{
st[k] = 0;
}
char succesor( char k )
{
if( k < N && st[k] < N )
{
st[k]++;
return 1;
}
return 0;
}
char valid( char k )
{
static char i;
for( i = 0; i < k; ++i )
{
if( st[k] <= st[i] )
return 0;
}
return 1;
}
char solutie( char k )
{
if( k == K-1 )
return 1;
return 0;
}
void tiparire( )
{
static char i;
printf( "%d", st[0] );
for( i = 1; i < K; ++i )
printf( " %d", st[i] );
printf("\n");
}
int main()
{
freopen( "combinari.in", "r", stdin );
freopen( "combinari.out", "w", stdout );
scanf( "%d %d", &N, &K );
char k = 0, as = 0, ev = 0;
init( k );
while( k >= 0 )
{
do
{
as = succesor( k );
if( as )
ev = valid( k );
} while( as && !ev );
if( as )
{
if( solutie( k ) )
tiparire();
else
init( ++k );
}
else
--k;
}
return 0;
}