Cod sursa(job #585738)

Utilizator ChallengeMurtaza Alexandru Challenge Data 30 aprilie 2011 11:32:47
Problema Avioane Scor 40
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 0.87 kb
#include <fstream>
#include <algorithm>

using namespace std;

const char InFile[]="avioane.in";
const char OutFile[]="avioane.out";
const int MaxN=100111;

ifstream fin(InFile);
ofstream fout(OutFile);

int N,v[MaxN];
long long sol,psol=-1,psolind,best[MaxN];

int main()
{
	fin>>N;
	for(register int i=1;i<=N;++i)
	{	
		fin>>v[i];
	}
	fin.close();

	sort(v+1,v+1+N);
	for(register int i=1;i<=N;++i)
	{	
		best[i]=(long long)((N-i+1))*(long long)(v[i]);
		if(psol<=best[i])
		{
			psol=best[i];
			psolind=i;
		}
	}
	
	for(register int psolind=1;psolind<=N;++psolind)
	{
		for(register int i=1;i<=N;++i)
		{
			long long c=0;
			if(i<psolind)
			{
				c=best[psolind]+(psolind-i)*v[i];
			}
			else
			{
				c=v[i]*(N-i+1)+v[psolind]*(i-psolind);
			}
			if(sol<c)
			{
				sol=c;	
			}
		}
	}

	fout<<sol;
	fout.close();
	return 0;
}