Cod sursa(job #2213881)

Utilizator DawlauAndrei Blahovici Dawlau Data 17 iunie 2018 19:40:22
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#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] << ' ';
}