Cod sursa(job #16791)

Utilizator horaxCont de teste horax Data 14 februarie 2007 02:14:00
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

long n,k;

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