Cod sursa(job #587092)

Utilizator katakunaCazacu Alexandru katakuna Data 3 mai 2011 21:16:50
Problema Avioane Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <cstdio>
#include <algorithm>
using namespace std;

#define Nmax 100100
#define ll long long

int n;
ll v[Nmax];

void rezolva () {

	int i, p;
	ll sol = 0, cst;
	for (i = p = n; i >= 1; i--) {
		while (p > 0 && v[p-1] * (ll)(i - (p-1)) > v[p] * (ll) (i - p) ) p--;
		
		cst = v[p] * (ll) (i - p) + v[i] * (ll)(n - i + 1);
		if (sol < cst) 
			sol = cst;  
	}

	printf ("%lld\n", sol);
}

int main () {

	freopen ("avioane.in", "r", stdin);
	freopen ("avioane.out", "w", stdout);

	scanf ("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf ("%lld", &v[i]);
	
	sort (v + 1, v + n + 1);

	rezolva ();

	return 0;
}