Cod sursa(job #70357)

Utilizator FlorianFlorian Marcu Florian Data 5 iulie 2007 17:05:28
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#include<values.h>
long long n,k,m;
long long cauta(long long k)
        {
        long long p;
        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;
        return m;
         }
int main()
        {
        FILE*f=fopen("farfurii.in","r");
        FILE*g=fopen("farfurii.out","w");
        fscanf(f,"%lld %lld",&n,&k);
        m=cauta(k);
        long long i;
  k-=m*(m-1)/2;
  if (k==0)
   {
     for (i=1; i<=n-m; i++) fprintf(g,"%lld ",i);
     for (i=n; i>n-m; i--) fprintf(g,"%lld ",i);
    }
   else
    {
      k=m-k; m++;
      for (i=1; i<=n-m; i++) fprintf(g,"%lld ",i);
      fprintf(g,"%lld ",n-k);
      for (i=n; i>n-k; i--) fprintf(g,"%lld ",i);
      for (i=n-k-1; i>n-m; i--) fprintf(g,"%lld ",i);
     
    }
        return 0;
        }