Pagini recente »
Atașamentele paginii nu_este_nevoie
|
Borderou de evaluare (job #519883)
|
idkddd
|
Borderou de evaluare (job #618304)
|
Cod sursă (job #136814)
Cod sursă (job
#136814)
#include <fstream>
#define min(a, b) (a<b)?a:b
int i, n, v[100001];
long long int t;
void quick_sort(int left, int right)
{
int i, j, pivot, tmp;
i=left;
j=right;
pivot=v[left+(right-left)/2];
while (i<=j)
{
while (v[i]<pivot)
i++;
while (v[j]>pivot)
j--;
if (i<=j)
{
tmp=v[i];
v[i]=v[j];
v[j]=tmp;
i++;
j--;
}
}
if (left<j)
quick_sort(left, j);
if (right>i)
quick_sort(i, right);
}
int main()
{
std::ifstream fin("lanterna.in");
std::ofstream fout("lanterna.out");
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
quick_sort(1, n);
while (n>3)
{
t+=min(2*v[2]+v[n]+v[1], 2*v[1]+v[n-1]+v[n]);
n-=2;
}
if (n==3)
t+=v[1]+v[2]+v[3];
else t+=v[2];
fout<<t;
return 0;
}