Pentru această operație este nevoie să te autentifici.
Cod sursă (job #446282)
Utilizator |
|
IP | ascuns |
---|---|---|---|
Problemă | Lanterna | Compilator | cpp | 0,93 kb |
Rundă | lasm_13_03_2019_10_12b | Status | evaluat |
Dată | 14 mar. 2019 15:37:35 | Scor | 0 |
#include<bits/stdc++.h>
using namespace std;
#define ion 100005
int a[ion],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("lanterna.in");
ofstream cout("lanterna.out");
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
quickSort(1,n);int i;int n1=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-i]+a[n-1]);
n-=2;
}
if(n==3){
rs+=(a[1]+a[2]+a[3]);
}
if(n==2){
rs+=a[2];
}
cout<<rs;
return 0;
}