Cod sursa(job #2753532)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 23 mai 2021 11:27:14
Problema Avioane Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
const int nmax=10002;
int n,v1[nmax],v2[nmax];
long long sol=0;
void solve(int st,int dr,int r,int l)
{
    if(st>dr)return;
    int mij=(st+dr)/2,val;
    long long Max=0;
    for(int i=r; i<=l && i<mij; i++)
    {
        if(1LL*(mij-i)*v1[i]>Max)
        {
            Max=1LL*(mij-i)*v1[i];
            val=i;
        }
    }
    v2[mij]=val;
    Max=Max+1LL*(n-mij+1)*v1[mij];
    sol=max(sol,Max);
    solve(mij+1,dr,v2[mij],l);
    solve(st,mij-1,r,v2[mij]);
}
int main()
{
    f>>n;
    for(int i=1; i<=n; i++)
    {
        f>>v1[i];
    }
    sort(v1+1,v1+n+1);
    solve(1,n,1,n);
    g<<sol<<'\n';
    return 0;
}