Cod sursa(job #827605)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 2 decembrie 2012 12:47:26
Problema Avioane Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream in("avioane.in");
ofstream out("avioane.out");

int a[111111];

int main()
{
    int n,i,j,s1=0,s2=0,maxim;
    in>>n;
    for(i=1;i<=n;++i)
    {
        in>>a[i];
    }
    sort(a+1,a+n+1);
    j=n;
    s1=a[n];
    s2=a[n-1];
    maxim=s1+s2;
    for(i=n-2;i;--i)
    {
        s2=a[i]*(j-i);
        while(j>i && s2-a[i]+a[j-1]*(n-j+2)>s2+s1)
        {
            s2-=a[i];
            j--;
            s1=a[j]*(n-j+1);
        }
        if(s1+s2>maxim)
            maxim=s1+s2;
    }
    out<<maxim;
    return 0;
}