Pagini recente » Cod sursa (job #2589376) | Cod sursa (job #3230730) | Cod sursa (job #2965247) | Cod sursa (job #2787852) | Cod sursa (job #585603)
Cod sursa(job #585603)
#include <fstream>
#include <algorithm>
#include <deque>
using namespace std;
int N;
long long P[100002];
long long maxnow[100002];
deque<long long> D;
long long result;
int main()
{
ifstream fin("avioane.in");
ofstream fout("avioane.out");
fin >> N;
for (int i = 1; i <= N; ++i)
fin >> P[i];
sort(P + 1, P + N + 1);
for (long long i = N; i >= 1; --i)
{
while (!D.empty() && P[i] * (N - i + 1) > P[D.back()] * (N - D.back() + 1))
D.pop_back();
D.push_back(i);
}
for (long long i = N; i >= 1; --i) // pt business
{
long long sumact = P[i] * (N - i + 1);
result = max(result, sumact);
while (D.front() >= i) D.pop_front();
if (!D.empty())
result = max(result, sumact + P[D.front()] * ((i - 1) - D.front() + 1));
}
fout << result;
fin.close();
fout.close();
}