Cod sursa(job #2754199)

Utilizator vasiliumirunamariaVasiliu Miruna-Maria vasiliumirunamaria Data 25 mai 2021 13:46:06
Problema Farfurii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#define N 100001

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


int n, k;

int main()
{
    int i, j, p;
    int t;

    fin >> n >> k;
    

    //nr maxim de inversiuni este n* (n - 1) /2 ->asta daca elementele sunt ordonate descrescator

    //avem nevoie de un numar cu k de inversiuni (sau imediat urmator) -> t
    t = 0;
    while (1LL* t * (t - 1) / 2 <= k)
        t++;

    //afisam crescator ce avem pana la n - t
    for (i = 1; i <= n - t; i++)
        fout << i << " ";
       

    //daca t * (t - 1) / 2 > k afisam un element de mijloc
    //care sa avem exact k perm
   
    
    long long mij = -1;
    if (1LL * t * (t - 1) / 2 > k)
    {
        mij = n - ((1LL * t * (t - 1) / 2) - k);
        fout << mij << " ";

    }

    //afisam restul descrescator  
    for (i = n; i > n - t; i--)
        if (i != mij)
            fout << i << " ";



   


    return 0;
}