Pagini recente » Cod sursa (job #3269137) | Cod sursa (job #1768916) | Cod sursa (job #81568) | Cod sursa (job #2085790) | Cod sursa (job #3133824)
#include <fstream>
using namespace std;
ifstream f("farfurii.in");
ofstream g("farfurii.out");
int main()
{
int n, inv = 0; //nr de numere de care avem nevoie pt realizarea inversiunilor
long long int k;
f >> n >> k;
f.close();
while(inv * (inv - 1) / 2 <= k) //gauss(inv - 1) numarul de inversiuni pe care le realizam cu inv nr
inv++;
for(int i = 1; i <= n - inv; i++)
g << i << ' ';
//daca am trecut peste k, va trebui sa scadem nr de inversiuni => mutam o val la stanga
int dif = (inv * (inv - 1) / 2) - k;
int val = n - dif; //valoarea care ne da numarul dif de inversiuni
g << val << ' '; //daca nu am trecut peste k afisam n, deci e ok
//afisam restul valorilor descrescator pt a obtine numarul de inversiuni
for(int i = n; i > n - inv; i--)
if(i != val)
g << i << ' ';
g.close();
return 0;
}