Cod sursa(job #289871)

Utilizator DraStiKDragos Oprica DraStiK Data 27 martie 2009 09:09:53
Problema Farfurii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define ll long long
ll n,k;
int main ()
{
    freopen ("farfurii.in","r",stdin);
    freopen ("farfurii.out","w",stdout);
    ll i,m,p;
    scanf ("%lld%lld",&n,&k);
    for (p=1; p<n; p*=2);
    for (m=0; p; p/=2)
        if (m+p<=n && (m+p)*(m+p-1)<=2*k)
            m+=p;
    k-=m*(m-1)/2;
    if (!k)
    {
        for (i=1; i<=n-m; ++i)
            printf ("%lld ",i);
        for (i=n; i>n-m; --i)
            printf ("%lld ",i); 
    }
    else
    {
        k=m-k;
        ++m;
        for (i=1; i<=n-m; ++i)
            printf ("%lld ",i);
        printf ("%lld ",n-k);
        for (i=n; i>n-k; --i)
            printf ("%lld ",i);
        for (n-k-1; i>n-m; --i)
            printf ("%lld ",i);
    }
    return 0;
}