Cod sursa(job #2228704)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 4 august 2018 17:12:19
Problema Avioane Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
int n,v[100002],nxtdif[100002];
long long sol;
int Lp=0;
int main()
{
    f>>n;
    for(int i=1;i<=n;++i)
        f>>v[i];
    sort(v+1,v+n+1);
    for(int i=n;i>=1;--i)
        if(v[i]!=v[i+1])
            nxtdif[i]=i+1;
        else
            nxtdif[i]=nxtdif[i+1];
    Lp=1;
    for(int i=1;i<=n;++i)
    {
        while(1LL*(i-Lp+1)*v[Lp]<=(i-nxtdif[Lp]+1)*v[nxtdif[Lp]])
            Lp=nxtdif[Lp];
        sol=max(sol,1LL*(n-i)*v[i+1]+1LL*(i-Lp+1)*v[Lp]);
    }
    g<<sol;
    return 0;
}