Cod sursa(job #3250346)

Utilizator dariustgameTimar Darius dariustgame Data 20 octombrie 2024 12:25:33
Problema Farfurii Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

int n, m;

int cautareBinara(int st, int dr)
{
	if (st >= dr)
	{
		return st;
	}
	int mij = (st + dr) / 2;
	if ((mij * (mij - 1)) / 2 == m)
	{
		return mij;
	}
	else if ((mij * (mij - 1)) / 2 < m)
	{
		return cautareBinara(mij + 1, dr);
	}
	else
	{
		return cautareBinara(st, mij);
	}
}

int main()
{
	fin >> n >> m;
	int x = cautareBinara(1, m);
	if (x * (x - 1) / 2 == m)
	{
		for (int i = 1; i <= n - x; i++)
		{
			fout << i << ' ';
		}
		for (int i = n; i > n - x; i--)
		{
			fout << i << ' ';
		}
	}
	else
	{
		int aux = (x - 1) * (x - 2) / 2;
		aux = m - aux;
		for (int i = 1; i <= n - x; i++)
		{
			fout << i << ' ';
		}
		fout << n - x + aux + 1 << ' ';
		for (int i = n; i > n - x; i--)
		{
			if (i != n - x + aux + 1)
			{
				fout << i << ' ';
			}
		}
	}
}