Pagini recente » Cod sursa (job #2904633) | Cod sursa (job #247315) | Cod sursa (job #2028522) | Cod sursa (job #1634925) | Cod sursa (job #1228271)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("avioane.in");
ofstream fout("avioane.out");
const int MAX_N = 100100;
int v[MAX_N];
int p[MAX_N];
int n;
void solve(int st, int dr, int poza, int pozb) {
if(st > dr) {
return;
}
int mij = (st + dr) / 2;
int q = 0;
for(int i = poza; i <= min(pozb, mij); i++) {
if((n - mij + 1) * v[mij] + (mij - i) * v[i] > p[mij]) {
p[mij] = (n - mij + 1) * v[mij] + (mij - i) * v[i];
q = i;
}
}
solve(st, mij - 1, poza, q);
solve(mij + 1, dr, q, pozb);
}
int main() {
fin >> n;
for(int i = 1; i <= n; i++) {
fin >> v[i];
}
sort(v + 1, v + n + 1);
solve(1, n, 1, n);
int ans = 0;
for(int i = 1; i <= n; i++) {
ans = max(ans, p[i]);
}
fout << ans;
return 0;
}