Pagini recente » Cod sursa (job #668743) | Cod sursa (job #2010460) | Cod sursa (job #165089) | Autentificare | Cod sursa (job #585655)
Cod sursa(job #585655)
#include<cstdio>
#include<algorithm>
using namespace std;
#define llong long long
int v[100001], pmax[100001], n, k;
llong smax = 0, poz, _max, ptmax;
int main() {
int i, j;
freopen("avioane.in", "rt", stdin);
freopen("avioane.out", "wt", stdout);
scanf("%d", &n);
for(i = 1; i <= n; ++i)
scanf("%d", &v[i]);
sort(v + 1, v + n + 1);
for(i = n; i > 0; --i)
if(smax < v[i] * (n - i + 1)) { //poate si = dar nu cred
smax = v[i] * (n - i + 1);
pmax[++k] = i;
}
smax = 0;
for(i = 1; i < n; ++i) {
_max = 0; ptmax = 0;
for(j = k; j > 0; --j) //sar putea sa trebuiasca sa compar doar ultimele 2 elem
if(v[i] * (pmax[j] - i) + v[pmax[j]] * (n - pmax[j] + 1) > _max) {
_max = v[i] * (pmax[j] - i) + v[pmax[j]] * (n - pmax[j] + 1);
ptmax = j;
}
k = ptmax;
if(_max > smax)
smax = _max;
}
printf("%lld", smax);
return 0;
}