Cod sursa(job #1826673)

Utilizator andreiugravuFMI Andrei Zugravu andreiugravu Data 10 decembrie 2016 18:46:48
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
//Farfurii

#include <fstream>

using namespace std;

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

long long N, K, p, i;

int main()
{
    fin>>N>>K;

    p = 1;
    while(p*(p-1)/2 < K) p++; //cautam cel mai mic p astfel incat p*(p-1)/2 > K

    for(i = 1 ; i <= N - p ; i++) //afisam cele mai mici numere, cat timp este posibil (mai putem obtine K inversiuni cu cele ramase)
        fout<<i<<" ";

    K = N + K - p*(p-1)/2;
    fout<<K<<" "; //mai intai il afisam pe K ( nou ), care da "diferenta" necesara pentru a obtine K ( vechi ) inversiuni

    for(i = N ; i >= N - p + 1 ; i--)
        if(i != K)
            fout<<i<<" "; //le afisam pe cele ramase

    fin.close();
    fout.close();

    return 0;
}