Cod sursa(job #585727)

Utilizator ChallengeMurtaza Alexandru Challenge Data 30 aprilie 2011 11:26:09
Problema Avioane Scor 0
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 0.79 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 i=1;i<=N;++i)
	{
		long long c=0;
		if(i<psolind)
		{
			c=psol+(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;
}