Cod sursa(job #585604)

Utilizator deneoAdrian Craciun deneo Data 30 aprilie 2011 10:08:53
Problema Avioane Scor 0
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 0.88 kb
#include<cstdio>
#include<algorithm>
using namespace std;

#define llong long long

int v[11], n;
llong smax1 = 0, smax2 = 0, poz, ssmax; 

int main() {
	int i, j;
	
	freopen("avioane.in", "rt", stdin);
	freopen("avioane.out", "wt", stdout);
	scanf("%d", &n);
	for(i = 1; i <= n; ++i)
		scanf("%d", &v[i]);
	
	sort(v + 1, v + n + 1);
	for(i = 1; i <= n; ++i) 
		if(v[i] * (n - i + 1) > smax1) {
			poz = i;
			smax1 = v[i] * (n - i + 1);
		}
	for(i = poz + 1; i <= n; ++i)
		if((v[i] - v[poz]) * (n - i + 1) > smax2)
			smax2 = (v[i] - v[poz]) * (n - i + 1);
			
	ssmax = smax1 + smax2;
	smax1 = 0; smax2 = 0;
	
	for(i = n; i >= 1; --i) 
		if(v[i] * (n - i + 1) > smax1) {
			poz = i;
			smax1 = v[i] * (n - i + 1);
		}
	for(i = poz - 1; i >= 1; --i)
		if(v[i] * (poz - i) > smax2)
			smax2 = v[i] * (poz - i);
	
	if(ssmax < smax1 + smax2)
		ssmax = smax1 + smax2;
		
	printf("%lld", ssmax);
	return 0;
}