Cod sursa(job #993106)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 3 septembrie 2013 11:56:55
Problema Avioane Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define N 100014
using namespace std;
int n,a[N];
long long b[N],sol;
void calc (int p, int u)
{
    if (p>u) return;
    int m=(p+u)/2,i;
    long long c;
    for (i=0;i<=m;i++)
    {
        c=(long long)(m-i+1)*a[i];
        if (b[m]<c)
            b[m]=c;
    }
    calc(p,m-1);
    calc(m+1,u);
}
int main ()
{
    int i,j;
    fstream f,g;
    f.open("avioane.in",ios::in);
    g.open("avioane.out",ios::out);
    f>>n;
    for (i=1;i<=n;i++)
       f>>a[i];
    sort(a+1,a+1+n);
    calc(1,n);
    for (i=2;i<=n;i++)
        sol=max(sol,b[i-1]+(long long)a[i]*(n-i+1));
    g<<sol;
}