Cod sursa(job #520946)

Utilizator S7012MYPetru Trimbitas S7012MY Data 10 ianuarie 2011 20:40:41
Problema Farfurii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
//Daca k e de forma M*(M-1)/2 -> 1, 2, 3, ... N-M, N, N-1, N-2, ... N-M+1
//altfel -> 1, 2, 3, ... N-M-1, N, N-1, N-2, ... N-M

#include <iostream>
#include <fstream>
#define LL long long
using namespace std;

LL n,m,k,i;

int main()
{
    ifstream f("farfurii.in");
    ofstream g("farfurii.out");
    f>>n>>k;
    LL ls=1,ld=n,m;
    for(;ls<ld;) {
        m=(ls+ld)>>1;
        if(m*(m-1)/2<k) ls=m+1;
        else ld=m;
    }
    if(m*(m-1)/2==k) {
        for(i=1;i<=n-m; ++i) g<<i<<' ';
        for(i=0;i<m; ++i) g<<n-i<<' ';
    }else {
        LL x=m*(m-1)/2-k;
        for(i=1;i<=n-m;++i) g<<i<<' ';
        g<<n-x<<' ';
        for(i=0;i<m;i++) if(i!=x) g<<n-i<<' ';
    }
    return 0;
}