Cod sursa(job #143775)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 26 februarie 2008 20:53:24
Problema Order Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <stdio.h>
int n,a[30100];

void afisare()
{
freopen ("order.in","r",stdin);
freopen ("order.out","w",stdout);
scanf ("%d",&n);
int nr=1,i=2,num=0,aux=n;

while (nr<=n)
{
    if (nr>aux)
       num=nr%aux;
    else
      num=nr;
   int nr1=0,ok=0,j;
   for (j=i;j<=n;j++)
	  if (a[j]==0)
	  {
	     nr1++;
	      if (nr1==num)
       {
	  printf ("%d ",j);
	  int kkt=0;
	  for (int k=j+1;k<=n;k++)
	     if (a[k]==0)
	     {
		i=k;
		kkt=1;
		break;
	     }
	     if (kkt==0)
	     {
		for (int q=1;q<=n;q++)
		   if (a[q]==0)
		   {
		      i=q;
		      kkt=1;
		      break;
		   }
	     }
	  ok=1;
	  a[j]=1;
	  break;
       }
	  }
   if (ok==0)
   {
   for (j=1;j<i;j++)
	 if (a[j]==0)
	 {
	    nr1++;
	    if (nr1==num)
       {
	  printf ("%d ",j);
	  int kkt=0;
	  for (int k=j+1;k<=n;k++)
	     if (a[k]==0)
	     {
		i=k;
		kkt=1;
		break;
	     }
	     if (kkt==0)
	     {
		for (int q=1;q<=n;q++)
		   if (a[q]==0)
		   {
		      i=q;
		      kkt=1;
		      break;
		   }
	     }
	  ok=1;
	  a[j]=1;
	  break;
       }
	 }
   }
   aux--;
   nr++;
}
   for (int q=1;q<=n;q++)
     if (a[q]==0)
     {
	printf("%d ",q);
	break;
     }
   fclose(stdin);
   fclose(stdout);

}

int main ()
{
   afisare();
   return 0;
}