Pagini recente » Cod sursa (job #1344238) | 3271c72e82 | Cod sursa (job #2000741) | Cod sursa (job #413382) | Cod sursa (job #1229680)
#include <fstream>
#include <algorithm>
#define DIM 100005
#define infile "avioane.in"
#define outfile "avioane.out"
using namespace std;
ifstream f(infile);
ofstream g(outfile);
int n;
int V[DIM];
long long D[DIM];
long long solve(int left, int right) {
if (left > right)
return 0;
int mid = ((left + right) >> 1);
long long Max = 0;
for (long long i = D[left - 1]; i <= std::min(D[right + 1], 1LL*mid); ++i) {
long long ans = 1LL * V[mid] * (n - mid + 1) + 1LL * V[i] * (mid - i);
if (Max < ans) {
Max = ans;
D[mid] = i;
}
}
return std::max(Max, std::max(solve(left, mid - 1), solve(mid + 1, right)));
}
int main() {
f >> n;
for (int i = 1; i <= n; ++i)
f >> V[i];
sort(V + 1, V + n + 1);
D[n + 1] = n;
g << solve(1, n);
return 0;
}
//This room.This bullet.There's a bullet for everyone. And a time. And a place. Yes... maybe this is how it has to be. - 47