Pagini recente » Cod sursa (job #43412) | Cod sursa (job #253435) | Cod sursa (job #668392) | Cod sursa (job #44961) | Cod sursa (job #2754199)
#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;
}