Cod sursa(job #1228337)

Utilizator Marius96Marius Gavrilescu Marius96 Data 13 septembrie 2014 20:20:17
Problema Avioane Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<cstdio>
#include<algorithm>

long long v[100005], ms;
int n, b, e, s;

bool calibb(){
	int ib=b;
	for(int i=e+1;i<n;i++){
		s=(n-i)*v[i]+(i-e)*v[e];
		if(s>ms)b=i,ms=s;
	}
	return b!=ib;
}
bool calibe(){
	int ie=e;
	for(int i=0;i<b;i++){
		s=(b-i)*v[i]+(n-b)*v[b];
		if(s>ms)e=i,ms=s;
	}
	return e!=ie;
}
int main(){
	freopen("avioane.in","r",stdin);
	freopen("avioane.out","w",stdout);
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%lld",v+i);
	std::sort(v,v+n);
	e=-1,b=n;
	while(calibe() || calibb());
	printf("%lld",ms);
	return 0;
}