Cod sursa(job #997383)

Utilizator misinoonisim necula misino Data 13 septembrie 2013 22:48:45
Problema Avioane Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#include<algorithm>
#define N 100010
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
int n,i,v[N],a[N];
long long maxi,sol[N];
inline void rez(int li,int ls)
{
    int i,mij=(li+ls)>>1;
    long long x;
    for(i=v[li-1];i<=mij&&i<=v[ls+1];++i)
    {
        x=(mij-i+1)*a[i];
        if(sol[mij]<x)
        {
            sol[mij]=x;
            v[mij]=i;
        }
    }
    if(li<mij)
    rez(li,mij-1);
    if(ls>mij)
    rez(mij+1,ls);
}
int main()
{
    f>>n;
    for(i=1;i<=n;++i)
    f>>a[i];
    sort(a+1,a+n+1);
    v[n+1]=n;
    rez(1,n);
    for(i=2;i<=n;++i)
    maxi=max(maxi,sol[i-1]+(long long)a[i]*(n-i+1));
    g<<maxi<<'\n';
    return 0;
}