Pagini recente » Cod sursa (job #2300588) | Cod sursa (job #1930415) | Cod sursa (job #2314320) | solutie/nrchei | Cod sursa (job #588933)
Cod sursa(job #588933)
# include <fstream>
# include <algorithm>
using namespace std;
std :: ifstream f ("avioane.in");
std :: ofstream g ("avioane.out");
int n, i, a[100010], p[100010];
long long S, sol[100010];
void calc (int st, int dr){
int m = (st + dr) >> 1, i;
for (i = p[st - 1]; i <= p[dr + 1]; ++i){
if (i > m) break ;
long long val = (long long)(m - i + 1) * a[i];
if (val > sol[m])
sol[m] = val, p[m] = i;
}
if (m - 1 >= st) calc (st, m - 1);
if (m + 1 <= dr) calc (m + 1, dr);
}
int main (){
f >> n;
for (i = 1; i <= n; ++i)
f >> a[i];
sort (a + 1, a + n + 1);
p[n + 1] = n;
calc (1, n);
for (i = 2; i <= n; ++i){
long long val = sol[i - 1] + a[i] * (long long)(n - i + 1);
if (val > S) S = val;
}
g << S << '\n';
g.close ();
return 0;
}