Cod sursă (job #691823)

Utilizator avatar Trusca-Marian-Daniel Trusca Marian-Daniel Trusca-Marian-Daniel IP ascuns
Problemă Lanterna Compilator cpp-32 | 1,11 kb
Rundă cex_11_12_30_ian_2023 Status evaluat
Dată 31 ian. 2023 21:47:25 Scor 0
#include <fstream>
#include <vector>
#include <set>
using namespace std;

ifstream cin("lanterna.in");
ofstream cout("lanterna.out");

int n, total;
multiset<int> stanga, dreapta;

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		int auxiliar;
		cin >> auxiliar;
		stanga.insert(auxiliar);
	}
	while (dreapta.size() != n)
	{
		int m1;
		if(stanga.empty() == false)
			m1 = *stanga.begin();
		stanga.erase(stanga.begin());
		int m2;
		if (stanga.empty() == false)
			m2 = *stanga.begin();
		stanga.erase(stanga.begin());
		total += m2;
		dreapta.insert(m1);
		dreapta.insert(m2);
		if (dreapta.size() < n)
		{
			m1 = *dreapta.begin();
			dreapta.erase(dreapta.begin());
			total += m1;
			stanga.insert(m1);
		}
	}
	cout << total;
	return 0;
}
/*
La pasul 1 se trec de la stanga la dreapta cei 2 oameni cu timp minim
La pasul 2 se trece de la dreapta la stanga omul cu timp minim
La pasul 3:
	Avem 3 variable
	m1 = cel mai rapid om
	m2 = al doilea cel mai rapid om
	m3 = al treilea cel mai rapid om
	m4 = al patrulea cel mai rapid om
	m2+m1+m3+m1+m4 ? m2+m1+m4+m2+m3  
*/