Cod sursa(job #23507)

Utilizator Ramona2007Furtuna Ramona Cristina Ramona2007 Data 28 februarie 2007 22:55:30
Problema Farfurii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<stdio.h>

      long v[10000];
   int main()
{
    long a, b, d, h,  i, f, j, n, k, g[10000], t;

   freopen("farfurii.in", "r", stdin);
   freopen("farfurii.out", "w", stdout);


scanf("%ld%ld", &n, &k);

       
 for(i=1;i<=n;i++)
 {  v[i]=i;  }

   if(k>(n*(n-1)/2))

   { return 0; }

   if(k==(n*(n-1)/2))
   { for(i=n;i>=1;i--)
     { printf("%ld", v[i]); printf(" "); }
   }


  if(k<(n*(n-1)/2))
  {
    g[1]=0; d=1;
         for(i=2;i<=n;i++)
	   {  g[i]=g[i-1]+d;

	   if(k>=((i-2)*(i-1)) && k<=(i*(i-1)))

             { t=i; }

	     d++; }
  }

  
  if(t*(t-1)/2==k)
   { for(i=1;i<=n-t;i++)
      { printf("%ld", v[i]);  printf(" "); }
      for(i=n;i>=n-t+1;i--)
      { printf("%ld", v[i]);  printf(" "); }
   }

  if(k>(t*(t-1)/2))
  {
    f=k-(t*(t-1)/2);

      for(i=1;i<n-t;i++)
       { printf("%ld", v[i]); printf(" "); }

      printf("%ld", v[n-f]); printf(" ");
       h=n;

    for(i=n-t+1;i<=n-f;i++)
     {   printf("%ld", h); printf(" ");
       h--;
     }
       for(i=n-f-1;i>=n-t;i--)
       {  for(j=i;j>=n-t;j--)
		 if(v[i]<v[j])
		 { v[i]=v[i]+v[j];
		   v[j]=v[i]-v[j];
		   v[i]=v[i]-v[j];
		 }
       }
	for(i=n-f-1;i>=n-t;i--)
	{  printf("%ld", v[i]);
	   printf(" ");
	}
}



  





 return 0;

 }