Cod sursa(job #2838591)

Utilizator AndreiBOTOBotocan Andrei AndreiBOTO Data 24 ianuarie 2022 11:32:35
Problema Avioane Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin ("avioane.in");
ofstream fout ("avioane.out");

const int NMAX=1e5+5;
long long kon=0,v[NMAX],tot[NMAX],n;

void divimp(long long st,long long dr,long long dre,long long sta)
{
    long long mij,maxim=1,p,i,j;
    if(st>dr)
        return;
    mij=(st+dr)/2;
    for(i=dre;i<=sta && i<mij;i++)
    {
        if(1LL*(mij-i)*v[i]>maxim)
        {
            maxim=1LL*(mij-i)*v[i];
            p=i;
        }
    }
    tot[mij]=p;
    maxim=maxim+1LL*(n-mij+1)*v[mij];
    kon=max(kon,maxim);
    divimp(mij+1,dr,tot[mij],sta);
    divimp(st,mij-1,dre,tot[mij]);
}

int main()
{
    long long i,j;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    sort(v+1,v+n+1);
    divimp(1,n,1,n);
    fout<<kon<<'\n';
    return 0;
}