Cod sursa(job #2349846)

Utilizator AlexutAlex Calinescu Alexut Data 20 februarie 2019 19:35:30
Problema Avioane Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb

#include <bits/stdc++.h>
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
long long x;
int n,v[1<<17],d[1<<17];
long long calc(int l,int r)
{
    if(l>r)
        return -1;
    int b=(l+r)>>1;
    long long best=0;
    for(int e=d[l-1]; e<=min(b,d[r+1]); ++e)
    {
        long long cur=1LL*v[b]*(n-b)+1LL*v[e]*(b-e);
        if(cur>best)
            best=cur,d[b]=e;
    }
    return max(best,max(calc(l,b-1),calc(b+1,r)));
}
int main()
{
    f>>n;
    for(int i=0; i<n; i++)
        f>>v[i];
    sort(v,v+n);
    d[n]=n;
    g<<calc(0,n-1);
    return 0;
}