Cod sursa(job #585852)

Utilizator tudorsTudor Siminic tudors Data 30 aprilie 2011 12:14:40
Problema Avioane Scor 10
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Open Marime 0.78 kb
#include <stdio.h>
#include <algorithm>
#define N 100005
using namespace std;
int n;
long long A[N];
long long rez,sol=0;
FILE *f,*g;
void citire()
{
	int i;
	fscanf(f,"%d",&n);
	for (i=1;i<=n;++i)
		fscanf(f,"%lld",&A[i]);
	sort(A+1,A+n+1);
}
int bs(int point)
{
	int st,dr,mij;
	st=1;
	dr=n;
	while (st<=dr)
	{
		mij=(st+dr)/2;
		if ((A[point]*(mij-point))+(A[mij]*(n-mij+1))>=rez)
		{
			rez=(A[point]*(mij-point))+(A[mij]*(n-mij+1));
			st=mij+1;
		}
		else
			dr=mij-1;
	}
	return dr;
}
void solve()
{
	int i,x;
	for (i=1;i<=n;i++)
	{
		rez=0;
		x=bs(i);
		if (rez>sol)
			sol=rez;
	}
	fprintf(g,"%lld",sol);
}
int main()
{
	f=fopen("avioane.in","r");
	g=fopen("avioane.out","w");
	citire();
	solve();
	fclose(f);
	fclose(g);
	return 0;
}