Pagini recente »
Rating Cocu Tudor (Tudor_CC)
|
Istoria paginii utilizator/arklahhis
|
Monitorul de evaluare
|
Borderou de evaluare (job #366905)
|
Cod sursă (job #446087)
Cod sursă (job
#446087)
#include <bits/stdc++.h>
using namespace std;
int n;
list<int> q;
priority_queue <int, vector<int>, greater<int> > pq;
int main()
{
ifstream cin("lanterna.in");
ofstream cout("lanterna.out");
cin >> n;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
q.push_back(x);
}
q.sort();
long long s = q.front();
pq.push(q.front());
q.pop_front();
s += q.front();
pq.push(q.front());
q.pop_front();
q.push_front(pq.top());
pq.pop();
while(!q.empty())
{
int last1 = q.back();
q.pop_back();
int firsts = q.front();
q.pop_front();
int firstf = pq.top();
pq.pop();
if (q.empty())
{
s += last1;
break;
}
int last2 = q.back();
q.pop_back();
if (last1 + firstf < last1 + 2 * firsts + last2)
{
s += last1 + firstf;
pq.push(last1);
pq.push(last2);
q.push_front(firstf);
q.push_front(firsts);
}
else
{
s += last1 + last2 + 2 * firsts;
pq.push(last1);
pq.push(last2);
pq.push(firstf);
q.push_front(firsts);
}
}
cout << s;
}