Pagini recente »
Istoria paginii runda/2017-11-23-test-5-1
|
Cod sursă (job #785575)
Cod sursă (job
#785575)
#include <stdio.h>
#include <stdlib.h>
int v[100001];
void myqsort(int begin,int end) {
int pivot=v[(begin+end)/2],b=begin,e=end,aux;
while(v[b]<pivot) {
b++;
}
while(v[e]>pivot) {
e--;
}
while(b<e) {
aux=v[b];
v[b]=v[e];
v[e]=aux;
b++;
e--;
while(v[b]<pivot) {
b++;
}
while(v[e]>pivot) {
e--;
}
}
if(begin<e) {
myqsort(begin,e);
}
if(e+1<end) {
myqsort(e+1,end);
}
}
int main() {
FILE *fin,*fout;
int i,n,a,b;
long long sol;
fin=fopen("lanterna.in","r");
fscanf(fin,"%d",&n);
for(i=1; i<=n; i++) {
fscanf(fin,"%d",&v[i]);
}
fclose(fin);
myqsort(1,n);
sol=0;
while(n>3) {
a=v[1]+2*v[2]+v[n];
b=v[n]+2*v[1]+v[n-1];
sol+=(a<b)?a:b;
n-=2;
}
if(n==3) {
sol+=v[1]+v[2]+v[3];
} else {
sol+=v[2];
}
fout=fopen("lanterna.out","w");
fprintf(fout,"%lld",sol);
fclose(fout);
return 0;
}