Pagini recente »
probleme_interesante
|
Cod sursă (job #446112)
Cod sursă (job
#446112)
#include<bits/stdc++.h>
using namespace std;
int a[1e5+5],n,rs;
int partition (int st, int dr)
{
int pivot=a[dr];
int i=(st-1);
for (int j=st;j<=dr-1;j++)
{
if (a[j]<=pivot)
{
i++;
swap(a[i],a[j]);
}
}
swap(a[i+1],a[dr]);
return (i+1);
}
void quickSort(int st, int dr)
{
if(st<dr)
{
int pi=partition(st,dr);
quickSort(st,pi-1);
quickSort(pi+1,dr);
}
}
int main(){
ifstream cin("lanterne.in");
ofstream cout("lanterne.out");
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
quickSort(1,n);
while(n-2>=2){
if(a[1]+2*a[2]+a[n]<=2*a[1]+a[n]+a[n-1])rs+=(a[1]+2*a[2]+a[n]);
else rs+=(2*a[1]+a[n]+a[n-1]);
n--;
}
if(n==3){
rs+=(a[1]+a[2]+a[2]);
}
if(n==2){
rs+=a[2];
}
cout<<rs;
return 0;
}