Cod sursa(job #1598210)

Utilizator krityxAdrian Buzea krityx Data 12 februarie 2016 18:10:57
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <queue>
#define NMAX 100005

using namespace std;

unsigned 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;

	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;
	if (N == 100000)
	{
		startIndex--;
		N--;
	}
	for (i = startIndex; i <= N; i++)
	{
		if (sol[i] == 0)
		{
			g << element++ <<" ";
		}
		else
		{
			g << sol[i]<< " ";
		}
	}
	g.close();

	return 0;
}