Pagini recente » Cod sursa (job #1427936) | Cod sursa (job #378804) | Cod sursa (job #2461133) | Cod sursa (job #2027354) | Cod sursa (job #2265265)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000;
int a[MAXN + 5];
int ans[MAXN + 5];
int n;
void solve(int i, int j, int di, int dj) {
if (i > j)
return ;
int mid = (i + j) / 2;
long long b = 0;
for (int x = di; x <= min(mid - 1, dj); ++x)
if (b < 1LL * (n - mid + 1) * a[mid] + 1LL * (mid - x) * a[x])
ans[mid] = x, b = 1LL * (n - mid + 1) * a[mid] + 1LL * (mid - x) * a[x];
solve(i, mid - 1, di, ans[mid]);
solve(mid + 1, j, ans[mid], dj);
}
int main() {
freopen("avioane.in", "r", stdin);
freopen("avioane.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
solve(1, n, 1, n);
long long sol = 0;
for (int i = 1; i <= n; ++i)
sol = max(sol, 1LL * (n - i + 1) * a[i] + 1LL * (i - ans[i]) * a[ans[i]]);
printf("%lld\n", sol);
return 0;
}