Cod sursa(job #1112337)

Utilizator misinoonisim necula misino Data 19 februarie 2014 18:24:10
Problema Avioane Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
#include<algorithm>
#define ll long long
#define N 100100
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
int i,n,maxi,sol[N],a[N],v[N];
inline void rez(int li,int ls)
{
    if(li>ls)
    return ;
    int mij=(li+ls)>>1;
    for(i=v[li-1];i<=v[ls+1]&&i<=mij;++i)
    {
        ll x=(mij-i+1)*a[i];
        if(x>sol[mij])
        {
            v[mij]=i;
            sol[mij]=x;
        }
    }
    rez(li,mij-1);
    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]+(n-i+1)*a[i]);
    g<<maxi<<'\n';
    return 0;
}