Cod sursa(job #941850)

Utilizator TheNechizFMI Razvan Birisan TheNechiz Data 19 aprilie 2013 21:41:58
Problema Farfurii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
# include <cstdio>
using namespace std;

int n,k;
int main()
{
    int i,m,p;
    freopen("farfurii.in","r",stdin);
    freopen("farfurii.out","w",stdout);
    scanf("%ld %ld",&n,&k);
    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;
    k -= m*(m-1)/2;
    if( !k )
    {
        for( i = 1 ; i <= n ; ++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');
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}