Cod sursa(job #586131)

Utilizator diac_paulPaul Diac diac_paul Data 30 aprilie 2011 13:48:30
Problema Avioane Scor 40
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Open Marime 0.81 kb
#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;

FILE *fin = fopen("avioane.in", "rt");
FILE *fout = fopen("avioane.out", "wt");

int n;
vector<int> a;

int main()
{
	int x;
	fscanf(fin, "%d", &n);
	for (int i = 0; i < n; i++)
	{
		fscanf(fin, "%d", &x);
		a.push_back(x);
	}

	sort(a.begin(), a.end());

	long long vmaxg = -1;
	for (int i = a.size() - 1; i >= 0; i--)
	{
		// business [i, n-1]
		long long vmax = -1;
		for (int j = i - 1; j >= 0; j--)
		{
			// economy [j, i-1]
			if (vmax < (long long) (i - j) * a[j])
				vmax = (long long) (i - j) * a[j];
		}
		if (vmax == -1)
			vmax = 0;
		if (vmaxg < vmax + (long long) (n - i) * a[i])
			vmaxg = vmax + (long long) (n - i) * a[i];
	}

	fprintf(fout, "%lld\n", vmaxg);
	fclose(fout);
	return 0;
}