Pagini recente » Cod sursa (job #2858337) | Cod sursa (job #2753966) | Cod sursa (job #661133) | Cod sursa (job #582732) | Cod sursa (job #585637)
Cod sursa(job #585637)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct dfsd{
long long val,cnt;
}red[100100];
long long N,R,nr[100100],sol,se,sb,ce,cb;
int main(){
freopen("avioane.in","r",stdin);
freopen("avioane.out","w",stdout);
long long i,j;
scanf("%lld",&N);
for(i=0;i<N;++i)
scanf("%lld",&nr[i]);
sort(nr,nr+N);
R=0;
for(i=0;i<N;++i){
if(nr[i]==red[R].val)
++red[R].cnt;
else{
red[++R].val=nr[i];
red[R].cnt=1;
}
}
ce=cb=0;
for(i=R+1,j=R+1;i>0;--i){
ce-=red[i].cnt;
cb+=red[i].cnt;
se=ce*red[j].val;
sb=cb*red[i].val;
if(j>0){
while(se<=(ce+red[j-1].cnt)*red[j-1].val){
--j;
ce+=red[j].cnt;
se=ce*red[j].val;
if(j==1)
break;
}
}
if(se+sb>sol)
sol=se+sb;
}
printf("%lld\n",sol);
fclose(stdin);
fclose(stdout);
return 0;
}