Pagini recente » Cod sursa (job #2106880) | Cod sursa (job #2990003) | Istoria paginii descriere/ordonare/prea-usor | Cod sursa (job #1592648) | Cod sursa (job #2753546)
#include <bits/stdc++.h>
#define nozerous(x) (x & -x)
#define MOD 9901
#define EPS 0.00001
using namespace std;
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int INF = (1 << 30), NMAX(100005), VMAX(1000000);
using VI = vector<int>;
using VVI = vector<VI>;
using VB = vector<bool>;
using Point = array<int, 2>;
using ll = long long;
using cd = complex<double>;
const double PI = acos(-1);
void BUNA(const string& task = "")
{
if (!task.empty())
freopen((task + ".in").c_str(), "r", stdin),
freopen((task + ".out").c_str(), "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
void PA()
{
exit(0);
}
int v[NMAX], n;
ll rez = -1;
inline void solve(int st, int dr, int limS, int limD){ ///convex hull trick
if(st > dr)
return;
int mij = (st + dr) / 2;
ll maxx = -1;
int wh = -1;
for(int i = limS; i < min(mij, limD + 1); ++i)
if(1ll * v[i] * (mij - i) > maxx){
maxx = 1LL * v[i] * (mij - i);
wh = i;
}
rez = max(rez, maxx + 1LL * (n - mij + 1) * v[mij]);
solve(st, mij - 1, limS, wh);
solve(mij + 1, dr, wh, limD);
}
int main()
{
BUNA("avioane");
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> v[i];
sort(v + 1, v + n + 1);
solve(1, n, 1, n);
cout << rez << '\n';
PA();
}