Cod sursa(job #1228339)

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

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

bool calibb(){
	int ib=b;
	for(int i=e+1;i<n;i++){
		s = v[i]*(n-i) + v[e]*(i-e);
		if(s>ms)b=i,ms=s;
	}
	return b!=ib;
}
bool calibe(){
	int ie=e;
	for(int i=0;i<b;i++){
		s = v[i]*(b-i) + v[b]*(n-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;
}