Pagini recente » Cod sursa (job #603036) | Cod sursa (job #888696) | Cod sursa (job #1770713) | Cod sursa (job #2843902) | Cod sursa (job #1077532)
#include <fstream>
#define MAXN 100001
using namespace std;
int main() {
int N, K;
ifstream in("farfurii.in");
in >> N >> K;
in.close();
int v[MAXN], i = 1, pos = 0;
long long sum = 0;
for (i = 1; i <= N; ++i) {
sum += i;
v[i] = i;
if (sum >= K) {
break;
}
}
--i; pos = i;
int val = N;;
while (i <= N) {
v[i++] = val--;
}
long long inversiuni = 1LL * (N - pos) * (N - pos + 1) / 2;
while (inversiuni > K) {
//schimb numarul de pe pos cu primul numar mai mic ca el
for (int j = pos + 1; j <= N; ++j) {
if (v[j] < v[pos]) {
swap(v[j], v[pos]);
break;
}
}
--inversiuni;
}
ofstream out("farfurii.out");
for (int i = 1; i <= N; ++i) {
out << v[i] << " ";
}
out.close();
return 0;
}