Cod sursa(job #69470)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 3 iulie 2007 10:55:36
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>

long long n,k;

int main()
{
  long long i,m,p;
  freopen("farfurii.in","r",stdin);
  freopen("farfurii.out","w",stdout);
  scanf ("%lld %lld",&n,&k);
  for (p=1; p<n; p*=2);
  for (m=0; p>0; p/=2)
   if (m+p<=n && (m+p)*(m+p-1)<=2*k) m+=p;
  k-=m*(m-1)/2;
  if (!k)
   {
     for (i=1; i<=n-m; i++) printf("%lld ",i);
     for (i=n; i>m-m; i--) printf("%lld ",i);
     putchar('\n'); }
   else
    {
      k=m-k; m++;
      for (i=1; i<=n-m; i++) printf("%lld ",i);
      printf("%lld ",n-k);
      for (i=n; i>n-k; i--) printf("%lld ",i);
      for (i=n-k-1; i>n-m; i--) printf("%lld ",i);
      putchar('\n');
    }
   return 0;
}