Cod sursă (job #546245)

Utilizator avatar antonio002 Filipciuc Antonio antonio002 IP ascuns
Problemă Lanterna Compilator cpp | 0,70 kb
Rundă lasm_19_03_2020_11 Status evaluat
Dată 19 mar. 2020 16:04:16 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,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;
}