Cod sursa(job #2902942)

Utilizator Bogdan197Putineanu Bogdan Bogdan197 Data 16 mai 2022 22:54:06
Problema Farfurii Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;

int nr_farfurii, nr_tacamuri;

int binarysearch(int l, int r)
{
	int m = (r + l) / 2;
	if ((m * m - 1) / 2 > nr_tacamuri)
	{
		if (((m - 1) * (m - 2) / 2) < nr_tacamuri)
			return m;
		return binarysearch(l, m);
	}
	else
		return binarysearch(m+1, r);

}
int main()
{
	ifstream f("farfurii.in");
	ofstream g("farfurii.out");

	f >> nr_farfurii >> nr_tacamuri;
	int i;
	int farfurii_necesare = binarysearch(1, nr_farfurii);	// atatea farfurii vom folosi pt inversiuni, restul le asezam crescator
	for (i = 1; i <= nr_farfurii - farfurii_necesare; i++)
		g << i << " ";
	int dif = nr_tacamuri - ((farfurii_necesare - 1) * (farfurii_necesare - 2) / 2);
	int copy = i;
	g << i + dif << " ";	
	for (i = nr_farfurii; i > copy + dif; i--)
		g << i << " ";
	for (i = copy + dif- 1; i >= copy ; i--)
		g << i << " ";
}