Cod sursă (job #486857)

Utilizator avatar Vasilescu_Cosmin Vasilescu Cosmin Vasilescu_Cosmin IP ascuns
Problemă Lanterna Compilator cpp | 0,74 kb
Rundă Arhiva de probleme Status evaluat
Dată 20 sept. 2019 08:58:09 Scor 100
#include <bits/stdc++.h>

using namespace std;

ifstream in ("lanterna.in");
ofstream out ("lanterna.out");

long int t[100005];

int cb(int val, int n)
{
    int pos=0;
    for(int msk=1<<20; msk>0; msk/=2)
        if(pos+msk<=n && t[pos+msk]<=val)
            pos+=msk;
    if(t[pos]<val && t[pos+1]>val)
        return pos+1;
    else
        return pos;
}

int main()
{
    long long n,i,si,minim=LLONG_MAX,j,s=0;
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>t[i];
    }
    sort(t+1,t+n+1);
    for(i=3; i<=n; i++)
    {
        s+=t[i];
    }
    i=cb(2*t[2]-t[1],n);
    i=(n+1-i)/2;
    si=(n-2-i)*t[1]+(2*i+1)*t[2]+s;
    for(j=1; j<=i; j++)
        si-=t[n+1-2*j];
    out<<si;
    return 0;
}