Pagini recente » Cod sursa (job #1701739) | Cod sursa (job #156104) | Cod sursa (job #4161) | Cod sursa (job #662921) | Cod sursa (job #2605652)
#include <iostream>
#include <fstream>
#include <algorithm>
#define NMAX 100000
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
int n, v[NMAX+10];
long long ans;
void solve(int st, int dr, int l, int r)
{ if(st > dr) return;
int mij = (st + dr) / 2, poz;
long long val = 1LL * v[mij] * (r - mij + 1), maxi = 0;
for(int i=l; i<=mij; i++)
if(val + 1LL * (mij - i) * v[i] > maxi)
{ maxi = val + 1LL * (mij - i) * v[i];
poz = i;
}
ans = max(ans, maxi);
solve(st, mij-1, l, poz);
solve(mij+1, dr, poz, r);
}
int main()
{
f >> n;
for(int i=1; i<=n; i++) f >> v[i];
sort(v+1, v+n+1);
solve(1, n, 1, n);
g << ans << '\n';
return 0;
}