Cod sursă (job #785575)

Utilizator avatar avram.popa Avram-Popa avram.popa IP ascuns
Problemă Lanterna Compilator c-32 | 1,11 kb
Rundă Arhiva de probleme Status evaluat
Dată 4 sept. 2024 19:45:15 Scor 100
#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;
}