Cod sursa(job #1598574)

Utilizator krityxAdrian Buzea krityx Data 13 februarie 2016 00:04:56
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <queue>
#define NMAX 100005

using namespace std;

long long sol[NMAX];

int main()
{
	long long N, K, V[NMAX], i, sum, max, pIndex, element;

	ifstream f("farfurii.in");
	f >> N >> K;
	f.close();

	i = 1;
	sum = 0;
	V[N] = 0;

	while (sum + i <= K)
	{
		sum += V[N - i] = i;
		i++;
	}
	max = i;
	pIndex = N - i;
	element = N;
	if (pIndex < 0)
	{
		pIndex++;
	}

	for (i = pIndex + 1; i <= N; i++)
	{
		if (V[i - 1] == K - sum)
		{
			sol[i] = element - 1;
			sol[pIndex] = element;
			element -= 2;
		}
		else
		{
			sol[i] = element--;
		}
	}

	element = 1;

	ofstream g("farfurii.out");
	long long startIndex = 1, endIndex = N;

	for (i = startIndex; i <= N; i++)
	{
		if (sol[i] == 0)
		{
			g << element++ << " ";
		}
		else
		{
			g << sol[i] << " ";
		}
	}
	g.close();

	return 0;
}