Pagini recente » Cod sursa (job #1674032) | Cod sursa (job #1192955) | Cod sursa (job #638223) | Cod sursa (job #351688) | Cod sursa (job #1521166)
#include <cstdio>
#include <algorithm>
#define MAXN 100000
using namespace std;
int v[MAXN+1],poz[MAXN+1],n;
void cauta(int st,int dr){
if(st<=dr){
long long max=0;
int j=-1,i;
for(i=poz[st-1];i<=poz[dr+1]&&i<=(st+dr)/2;i++)
if(max<1LL*((st+dr)/2-i)*v[i]+1LL*(n-(st+dr)/2)*v[(st+dr)/2]){
max=1LL*((st+dr)/2-i)*v[i]+1LL*(n-(st+dr)/2)*v[(st+dr)/2];
j=i;
}
if(j>-1)
poz[(st+dr)/2]=j;
cauta(st,(st+dr)/2-1);
cauta((st+dr)/2+1,dr);
}
}
int main(){
FILE*fi,*fout;
int i,j;
long long max;
fi=fopen("avioane.in" ,"r");
fout=fopen("avioane.out" ,"w");
fscanf(fi,"%d" ,&n);
for(i=1;i<=n;i++)
fscanf(fi,"%d" ,&v[i]);
sort(v+1,v+n+1);
poz[0]=1;
poz[n+1]=n;
cauta(1,n);
max=0;
for(i=1;i<=n;i++)
if(max<1LL*(i-poz[i])*v[poz[i]]+1LL*(n-i+1)*v[i])
max=1LL*(i-poz[i])*v[poz[i]]+1LL*(n-i+1)*v[i];
fprintf(fout,"%lld" ,max);
fclose(fi);
fclose(fout);
return 0;
}