Cod sursa(job #1795064)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 1 noiembrie 2016 22:37:31
Problema Avioane Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 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;
}