Pagini recente » Cod sursa (job #725697) | Cod sursa (job #2868468) | Cod sursa (job #1626928) | Cod sursa (job #1926821) | Cod sursa (job #1224037)
#include<fstream>
#include<algorithm>
using namespace std;
const int NM = 100005;
long long a[NM], mx[NM], dq[NM];
int N;
int main(){
ifstream cin("avioane.in");
ofstream cout("avioane.out");
int i;
cin >> N;
for(i=1;i<=N;++i) cin >> a[i];
sort(a+1,a+N+1);
long long SMAX = 1LL * a[1] * N, Sum = 0;
int head,tail;
head=tail=1;
dq[1] = 1;
mx[1]=a[1];
for(i=2;i<=N;++i)
{
if(a[dq[head]] != a[i])dq[++head] = i;
//if(a[dq[head]] * (i - dq[head] +1) > a[dq[tail]] * (i - dq[tail] +1) ) tail = head;
while(tail < head && a[dq[tail]] * (i-dq[tail]+1) <= a[dq[tail+1]] * (i-dq[tail+1] + 1)) ++ tail;
mx[i] = a[dq[tail]] * (i-dq[tail]+1);
}
for(i=2;i<=N;++i)
{
SMAX = max(SMAX, mx[i-1] + a[i]*(N-i+1));
}
cout << SMAX << '\n';
return 0;
}