Cod sursa(job #927975)

Utilizator PatrikStepan Patrik Patrik Data 26 martie 2013 10:14:24
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
    #include<cstdio>
    using namespace std;
    #define MAX 100001
    int N,p[MAX] , m , rest;
    long long K;

    int main()
    {
        freopen("farfurii.in" , "r" , stdin );
        scanf("%d%lld" , &N , &K);
        m = 1;
        while(1ll*m*(m-1)<=2*K)m++;
        m--;
        if(1ll*m*(m-1)/2==K)
        {
            for(int i = 1 ; i <= N-m ; ++i )
                p[i] = i;
            for(int i = 1 ; i <= m ; ++i )
                p[N-m+i] = N-i+1;
        }
        else
        {
            for(int i = 1 ; i< N-m  ; ++i )
                p[i] = i;
            rest = 1ll*m*(m+1)/2-K;
            p[N-m] = N-rest;
            int j = N;
            for(int i = 1 ; i <= m ; ++i )
            {
                if(i-1==rest)j--;
                p[N-m+i] = j--;
            }
        }
        freopen("farfurii.out" , "w" , stdout );
        for(int i = 1 ; i <= N ; ++i )
            printf("%d " , p[i] );
        return 0;
    }