Cod sursa(job #1401722)

Utilizator DysKodeTurturica Razvan DysKode Data 26 martie 2015 08:51:18
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

int v[100000],posSchimb,y,i,j,n,k,nr,x;
long long int d;

ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

int main()
{
    if(false)
    {/*

    cin>>n;
    for(i=1 ; i<=n ; ++i)
        v[ i ] = i;

    do
    {
        k = 0;
        for( i=1 ; i<n ; ++i )
            for( j=i+1 ; j<=n ; ++j )
                if( v[ i ] > v[ j ] )
                    ++k;
        if( freq[ k ] == 0 )
        {
            freq[ k ] = 1;
            cout<<k<<"    ";
            for(i=1 ; i<=n ; ++i)
                cout<<v[i]<<' ';
            cout<<'\n';
        }

    }
    while(next_permutation(v+1,v+n+1));*/
}

    fin>>n>>k;
    for(i=1 ; d<k ; ++i )
        d += i;

    posSchimb = i;

    ++j;
    for( i=1 ; i<=n-posSchimb ; ++i , ++j )
        v[ j ] = i;

    y = i;

    for( i = n  ; i >= y ; --i , ++j )
        v[ j ] = i;

    posSchimb = n - posSchimb + 1;

    if( d != k )
    {
        nr = d - k;

        x = v[ posSchimb ];

        swap( v[ posSchimb ] , v[ posSchimb + nr ] );

        for(i=posSchimb + nr ; i>posSchimb ; --i)
            v[ i ] = v[ i - 1 ];

        v[posSchimb + 1] = x;

    }

    for(i=1 ; i<=n ; ++i)
        fout<<v[i]<<' ';


return 0;
}