Pagini recente » Cod sursa (job #1954475) | Cod sursa (job #292472) | Cod sursa (job #2198421) | Cod sursa (job #1687010) | Cod sursa (job #1194497)
#include <iostream>
#include <fstream>
#include <algorithm>
#define maxn 100100
#define ll long long
using namespace std;
ll v[maxn];
int d[maxn], st,dr;
ifstream in("avioane.in");
ofstream out("avioane.out");
ll f(int i,int j)
{
if(v[i]==v[j])
return maxn;
return (v[j]*j-v[i]*i)/(v[j]-v[i]) + 1;
}
int main()
{
int n;
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
sort(v+1,v+n+1);
ll r=v[1]*n;
d[++dr]=1;
st=1;
for(int i=2;i<=n;i++)
{
while(st<dr && f(d[st],d[st+1])<=i)
st++;
r=max(r,(n-i+1)*v[i]+(i-d[st])*v[d[st]]);
if(v[i]==v[d[dr]])
continue;
while(st<dr && f(d[dr-1],i)>f(d[dr],i))
dr--;
d[++dr]=i;
}
out<<r;
return 0;
}