Cod sursa(job #70335)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 5 iulie 2007 16:06:51
Problema Farfurii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<values.h>
long n,k,m;
long cauta(long k)
        {
        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,"%ld %ld",&n,&k);
        m=cauta(k);
        long i;
        if(k==m)
                {
                for(i=1;i<=n-m;i++) fprintf(g,"%ld ",i);
                for(i=n;i>=m-m;i--) fprintf(g,"%ld ",i);
                }
        else
                { k=m-k; m++;
                for(i=1;i<=n-m;++i) fprintf(g,"%ld ",i);
                fprintf(g,"%ld ",n-((m+1)*m/2-k));
                for(i=n;i>=n-m;--i) if(i!=n-((m+1)*m/2-k))fprintf(g,"%ld ",i);
                }
        return 0;
        }