Pagini recente » Cod sursa (job #518377) | Cod sursa (job #2790100) | Cod sursa (job #1634325) | Cod sursa (job #3031832) | Cod sursa (job #1058919)
#include<fstream>
#include<algorithm>
#define Nmax 100002
#define LL long long
using namespace std;
ifstream f("avioane.in"); ofstream g("avioane.out");
int n,i,s[Nmax];
LL profit,a[Nmax],b[Nmax];
void calc(int p, int u)
{ if (p>u) return;
int i,m=(p+u)>>1;
for(i=s[p-1];i<=min(s[u+1],m);++i)
{ LL c=(m-i+1)*a[i];
if(b[m]<c) b[m]=c, s[m]=i;
}
calc(p,m-1); calc(m+1,u);
}
int main ()
{ f>>n;
for(i=1;i<=n;++i) f>>a[i];
sort(a+1,a+n+1); s[n+1]=n; calc(1,n);
for(i=2;i<=n;++i) profit=max(profit,b[i-1]+a[i]*(n-i+1));
g<<profit<<'\n'; g.close(); return 0;
}