Cod sursa(job #1387543)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 14 martie 2015 13:37:16
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <cmath>
#include <vector>
#include <iostream>

using namespace std;

typedef unsigned long long BigUnsigned;

vector<unsigned> gen_perm(unsigned n, BigUnsigned m, BigUnsigned k) {
	vector<unsigned> result;

	for(int i = 1; i <= n-m; ++i) {
		result.push_back(i);
	}
	unsigned swap_val = n-(m*(m-1)/2-k);
	result.push_back(swap_val);
	for(int i = n; i > n-m; --i) {
		if(i!=swap_val)
			result.push_back(i);
	}

	return result;
}

int main() {

	ifstream in("farfurii.in");
	unsigned n;
	BigUnsigned k;
	in >> n >> k;

	BigUnsigned m = ceil((1+sqrt(1.0f+8.0f*k))/2.0f);

	vector<unsigned> perm = gen_perm(n,m,k);

	ofstream out("farfurii.out");
	for(unsigned i:perm) {
		out << i << ' ';
	}
}