Cod sursa(job #1081787)

Utilizator razvan9310FMI - Razvan Damachi razvan9310 Data 13 ianuarie 2014 21:45:14
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <cmath>
#define MAXN 100001
using namespace std;

int main() {
	long long N, K;
	ifstream in("farfurii.in");
	in >> N >> K;
	in.close();

	int v[MAXN];
	double p = (sqrt(1 + 8*K) - 1) / 2;
	long long pos = p;
	if (p != (long long)p) {
		++pos;
	}
	pos = N - pos;

	ofstream out("farfurii.out");

	for (int i = 1; i < pos; ++i) {
		out << i << " ";
	}
	int val = N;
	for (int i = pos; i <= N; ++i) {
		v[i] = val--;
	}

	long long inversiuni = (N - pos) * (N - pos + 1) / 2;
	long long diff = inversiuni - K;
	int pos2 = pos + diff;

	while (diff) {
		swap(v[pos2], v[pos2 - diff]);
		--diff;
	}

	for (int i = pos; i <= N; ++i) {
			out << v[i] << " ";
	}
	out.close();

	return 0;
}