Cod sursa(job #69065)

Utilizator sealTudose Vlad seal Data 1 iulie 2007 01:20:15
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#define Nm 100001
int P[Nm],n;
long long k;

void read()
{
    freopen("farfurii.in","r",stdin);
    scanf("%d%lld",&n,&k);
}

void solve()
{
    int i,j,l;

    for(i=1;i<=n;++i)
        if(k<=(long long)(n-i)*(n-i-1)>>1)
            P[i]=i;
        else
            break;
    if(i<=n)
    {
        P[i]=i+k-((long long)(n-i)*(n-i-1)>>1);
        l=i;
        for(j=n;j>P[i];--j)
            P[++l]=j;
        for(j=P[i]-1;j>=i;j--)
            P[++l]=j;
    }
}

void write()
{
    int i;

    freopen("farfurii.out","w",stdout);
    for(i=1;i<n;++i)
        printf("%d ",P[i]);
    printf("%d\n",P[i]);
}

int main()
{
    read();
    solve();
    write();
    return 0;
}