Cod sursa(job #516546)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 24 decembrie 2010 18:08:42
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "farfurii.in";
const char oname[] = "farfurii.out";

using namespace std;

ifstream fin(iname);
ofstream fout(oname);

long long ap[200005], n, k, i;

int main()
{
	fin >> n >> k;
	for(i = 1; i <= n; i ++)
	{
		if((n - i) * (n - i - 1) / 2 >= k && (n - i + 1) * (n - i) / 2 >= k)
		{
			fout << i << " ";
			ap[i] = 1;
		}
		else
		{	
			if(k < (n - i) * (n - i + 1) / 2)
			{
				fout << n - ((n - i) * (n - i + 1) / 2 - k) << " ";
				ap[n - ((n - i) * (n - i + 1) / 2 - k)] = 1;
				break;
			}
			else
				if(k > (n - i) * (n - i + 1) / 2)
				{
					fout << i + k - (n - i) * (n - i + 1) / 2  << " ";
					ap[i + k - (n - i) * (n - i + 1) / 2] = 1;
					break;
				}
			else	
			{
				fout << n << " ";
				ap[n] = 1;
				break;
			}
		}
	}
	for(i = n; i >= 1; i --)
		if(ap[i] == 0)
			fout << i << " ";
	return 0;
}