Pagini recente » Cod sursa (job #1710260) | Cod sursa (job #931805) | Cod sursa (job #2328957) | Cod sursa (job #3183298) | Cod sursa (job #1747214)
#include<fstream>
#include<algorithm>
using namespace std;
typedef long long int lld;
const int NMAX = 100000+5;
int N;
int V[NMAX];
int P[NMAX];
lld Best[NMAX];
lld sol;
void Solve(int lo,int hi)
{
if(lo>hi) return;
int mi=(lo+hi)/2,i;
lld sum;
for(i=P[lo-1]; i<=P[hi+1]; i++)
{
sum=1LL*(mi-i+1)*V[i]+1LL*(N-mi)*V[mi+1];
if(sum>Best[mi])
{
Best[mi]=sum;
P[mi]=i;
}
}
Solve(lo,mi-1);
Solve(mi+1,hi);
}
int main()
{
int i;
ifstream fin("avioane.in");
ofstream fout("avioane.out");
fin>>N;
for(i=1; i<=N; i++)
fin>>V[i];
sort(V+1,V+N+1);
P[N+1]=N;
Solve(1,N);
for(i=1; i<=N; i++)
if(V[i]==V[i+1]) continue;
else sol=max(sol,Best[i]);
fout<<sol;
fin.close();
fout.close();
return 0;
}