Pagini recente » Cod sursa (job #3147065) | Cod sursa (job #2751955) | Cod sursa (job #1562107) | Cod sursa (job #1451105) | Cod sursa (job #1135934)
#include <algorithm>
#include <fstream>
using namespace std;
const int N=100005;
ifstream fin("avioane.in");
ofstream fout("avioane.out");
int a[N], dq[N], t[N];
int main()
{
int n, i, st, dr, x;
long long sol;
fin>>n;
for(i=1;i<=n;i++) fin>>a[i];
sort(a+1, a+n+1);
dq[1]=st=dr=1;
sol=1LL*a[1]*n;
for(i=2;i<=n;i++)
{
if(st<dr&&t[dq[st+1]]==i) st++;
t[dq[st]]=i;
while(st<=dr)
{
if(a[i]==a[dq[dr]]) x=N;
else x=min(1LL*N, 1LL*a[dq[dr]]*(i-dq[dr])/(a[i]-a[dq[dr]])+i);
if(x<=t[dq[dr]]) dr--;
else break;
}
dq[++dr]=i;
t[i]=x;
sol=max(sol, 1LL*a[dq[st]]*(i-dq[st]+1)+1LL*a[i+1]*(n-i));
}
fout<<sol<<"\n";
fin.close();
fout.close();
}