Pagini recente » Cod sursa (job #1806929) | Monitorul de evaluare | Cod sursa (job #1738346) | Cod sursa (job #69543) | Cod sursa (job #2213881)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
long long nC2(const long long &n) {
return ((n * (n - 1)) >> 1);
}
int main() {
long long N, K;
fin >> N >> K;
vector <int> perm;
perm.resize(N + 1);
for (int idx = 1; idx <= N; ++idx)
perm[idx] = idx;
int pos = N;
while (nC2(N - pos + 1) <= K)
--pos;
++pos;
K -= nC2(N - pos + 1);
reverse(perm.begin() + pos, perm.end());
for (int idx = N; K; --K, --idx)
swap(perm[idx], perm[pos - 1]);
for (int idx = 1; idx <= N; ++idx)
fout << perm[idx] << ' ';
}