Cod sursa(job #70349)

Utilizator FlorianFlorian Marcu Florian Data 5 iulie 2007 16:24:45
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<values.h>
long long unsigned n,k,m;
long long unsigned cauta(long long unsigned k)
        {
        long long unsigned 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,"%llu %llu",&n,&k);
        m=cauta(k);
        long long unsigned i;
        if(k==m)
                {
                for(i=1;i<=n-m;++i) fprintf(g,"%llu ",i);
                for(i=n-1;i>n-m;--i) fprintf(g,"%llu ",i);
                }
         else
                {
                for(i=1;i<=n-m-1;++i) fprintf(g,"%llu ",i);
                fprintf(g,"%llu ",n-((m+1)*m/2-k));
                for(i=n;i>=n-m;--i) if(i!=n-((m+1)*m/2-k))fprintf(g,"%llu ",i);
                
                }
        return 0;
        }