Pagini recente » Cod sursa (job #2052026) | Cod sursa (job #2913231) | Cod sursa (job #2600209) | Cod sursa (job #1085221) | Cod sursa (job #2753607)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("farfurii.in");
ofstream gout("farfurii.out");
int n, k, numarul_de_numere_care_trebuie_inversate;
int main()
{
fin >> n >> k;
while (numarul_de_numere_care_trebuie_inversate * (numarul_de_numere_care_trebuie_inversate - 1) / 2 < k)
++numarul_de_numere_care_trebuie_inversate;
int rest = n - numarul_de_numere_care_trebuie_inversate;
for (int i = 1 ; i <= rest ; ++i)
gout << i << " ";
// trebuie sa determinam elementul care "nu respecta ordinea"
int nr_total_inversiuni = numarul_de_numere_care_trebuie_inversate * (numarul_de_numere_care_trebuie_inversate - 1) / 2;
int numar_inversiuni_in_plus = nr_total_inversiuni - k;
int intrus = n - numar_inversiuni_in_plus;
gout << intrus << " "; // scapam de cele 'numar_inversiuni_in_plus' inversiuni daca afisam mai intai 'intrus'
for (int i = n ; i > rest; --i)
if (i != intrus)
gout << i << " ";
return 0;
}