Pagini recente » Cod sursa (job #2324603) | Cod sursa (job #2833782) | Cod sursa (job #191401) | Cod sursa (job #1469075) | Cod sursa (job #768620)
Cod sursa(job #768620)
#include <fstream>
#include <algorithm>
#define N 100000
#define LL long long
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
int n,i,A[N],j,S[N];
LL B[N],ANS,c;
void Precalc (int p, int u)
{
if (p>u) return;
int m=(p+u)/2;
for (i=S[p-1];i<=S[u+1] && i<=m;i++)
if (B[m]<(c=(m-i+1)*1LL*A[i]))
{
B[m]=c;
S[m]=i;
}
Precalc(p,m-1);
Precalc(m+1,u);
}
int main ()
{
f >> n;
for (i=1;i<=n;i++)
f >> A[i];
sort(A+1,A+n+1);
S[n+1]=n;
Precalc(1,n);
for (i=1;i<=n;i++)
ANS=max(ANS,B[i-1]+A[i]*1LL*(n-i+1));
g << ANS << '\n';
f.close();g.close();
return 0;
}