Cod sursa(job #70338)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 5 iulie 2007 16:08:36
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-k);
		for (i=n; i>n-k; i--) printf("%ld ",i);
                for(i=n-k-1;i>n-m;i--) fprintf(g,"%ld",i);
                }
        return 0;
        }