Pagini recente » Cod sursa (job #2622939) | Cod sursa (job #2446597) | Cod sursa (job #847672) | Cod sursa (job #1633003) | Cod sursa (job #1724212)
#include <fstream>
#include <algorithm>
using namespace std;
constexpr int MAX_N = 100000;
int v[MAX_N];
int n;
long long divide(int b, int e, int lo, int hi) {
if (b > e) {
return 0;
} else {
int m = (b + e) >> 1;
long long best = 0LL; int bestIndex = -1;
for (int i = (hi > m) ? m : hi; i >= lo; i -= 1) {
const long long cost = (long long) v[m] * (n - m) + (long long) v[i] * (m - i);
if (cost > best) {
best = cost;
bestIndex = i;
}
}
return max({best,
divide(b, m - 1, lo, bestIndex),
divide(m + 1, e, bestIndex, hi)});
}
}
int main() {
ifstream fin("avioane.in");
ofstream fout("avioane.out");
fin.tie(0);
ios_base::sync_with_stdio(false);
fin >> n;
for (int i = 0; i < n; i += 1) {
fin >> v[i];
}
sort(v, v + n);
fout << divide(0, n - 1, 0, n - 1) << '\n';
fout.close();
return 0;
}