Pagini recente »
fa-l_pe-asta-daca-poti
|
Clasament labsort9d
|
Istoria paginii runda/2k/clasament
|
Istoria paginii runda/pre_oni_clasa-a_5-6-7
|
Cod sursă (job #691823)
Cod sursă (job
#691823)
#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
*/