Pagini recente » Cod sursa (job #1279666) | Cod sursa (job #2078761) | Cod sursa (job #448068) | Cod sursa (job #2893849) | Cod sursa (job #1209564)
#include<fstream>
#include<algorithm>
using namespace std;
typedef struct { long long st, panta; } tip;
tip stiva[100005];
long long i,n,m,a[100005],aux[100005],vf,sol,lim;
long long f(tip dr, long long x) {
return (x-dr.st+1)*dr.panta;
}
int main(void) {
ifstream fin("avioane.in");
ofstream fout("avioane.out");
fin>>n;
for (i=1; i<=n; ++i) fin>>a[i];
sort(a+1,a+n+1);
vf=1; lim=1;
stiva[vf].st=1;
stiva[vf].panta=a[1];
aux[1]=a[1];
for (i=2; i<n; ++i){
long long stc=i, pantac=a[i];
tip dc;
dc.st=i;
dc.panta=a[i];
while (vf<lim && f(stiva[vf],i)<=f(stiva[vf+1],i)) ++vf;
while (pantac>=f(stiva[lim],i) && lim>=vf) --lim;
++lim;
stiva[lim]=dc;
aux[i]=f(stiva[vf],i);
}
for (i=2; i<=n; ++i)
sol=max(sol,a[i]*(n-i+1)+aux[i-1]);
fout<<sol;
return 0;
}