Pagini recente » Cod sursa (job #711409) | Cod sursa (job #2324759) | Cod sursa (job #196336) | Cod sursa (job #207204) | Cod sursa (job #2265262)
#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;
int b = 0;
for (int x = di; x <= min(mid - 1, dj); ++x)
if (b < (n - mid + 1) * a[mid] + (mid - x) * a[x])
ans[mid] = x, b = (n - mid + 1) * a[mid] + (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);
int sol = 0;
for (int i = 1; i <= n; ++i)
sol = max(sol, (n - i + 1) * a[i] + (i - ans[i]) * a[ans[i]]);
printf("%d\n", sol);
return 0;
}