Cod sursa(job #254402)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 7 februarie 2009 11:54:59
Problema Planeta Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.91 kb
#include<stdio.h>
int v[31],i,n,as,ok;
long z,k;
void init()
{
  v[i]=0;
}
int tipar ()
{
 if(z==k)
  {
     for(i=1;i<=n;i++)
	printf("%d ",v[i]);
	return 1;
  }
  return 0;
}
int succesor()
{
  return (i<n);
}
int valid ()
{
for(int j=1;j<=n;j++)
  if(v[j]==v[i] && i!=j)
	return 0;
 if(v[i]==0)
 return 0;
return 1;
}
int back()
{
 i=1;
 init();
while(1)
{
as=succesor();
if(as)
{
 do
 {
  v[i]++;
 }while(!valid()); //while
if(v[i]>n)
{
init();
i--;
}
else
   {
    i++;
    init();
    }
}
else
 {
   do
   {
    v[i]++;
   }while(!valid()); //while
   if(v[i]>n)
   {
    init();
    i--;
   }//if
   else
      {
       z++;
       ok=tipar();
	if(ok)
	    return 0;
      }
 }//else
}//while
}//back
int main ()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
scanf("%d%ld",&n,&k);
back();
printf("\n");
return 0;
}