Cod sursa(job #645216)

Utilizator MciprianMMciprianM MciprianM Data 8 decembrie 2011 20:43:40
Problema Avioane Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <ctime>
#include <algorithm>

int n, maxPayment [100000];

int next;

int rand(void) 
{
	next = next * 1103515245 + 12345;
	return next % 100000;
}

void srand(unsigned int seed)
{
	next = seed;
}

int main () {
	int i;
	srand (time(0));
	freopen ("avioane.in", "rt", stdin);
	freopen ("avioane.out", "wt", stdout);
	scanf ("%d", &n);
	for (i = 0; i < n; ++ i) {
		scanf ("%d", &maxPayment [i]);
	}
	std::sort (maxPayment, maxPayment + n);
	long long maxProfit = -1;
	for (i = 0; i < 2500000; ++ i) {
		int pos1 = rand ();
		int pos2 = rand ();
		if (pos1 > pos2) {
			std :: swap (pos1, pos2);
		}
		maxProfit = std::max (maxProfit, (n - pos2) * 1ll * maxPayment [pos2] + (pos2 - pos1) * 1ll * maxPayment [pos1]);
	}
	printf ("%lld", maxProfit);
	return 0;
}