Cod sursa(job #586075)

Utilizator razielreaperMatei Andrei razielreaper Data 30 aprilie 2011 13:36:10
Problema Avioane Scor 0
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 0.76 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[100000],i,cls1,cls2,p1,p2,pmax,n;
int main()
{
	freopen("avioane.in","r",stdin);
	freopen("avioane.out","w",stdout);
	scanf("%d\n",&n);
	for(i=1;i<=n;i++)
		scanf("%d ",&a[i]);
	sort(a+1,a+n+1);
	cls1=1;cls2=n;p1=0;p2=0;
	pmax=0;
	for(i=1;i<=n;i++)
		if(a[i]<a[cls2])p1+=a[cls1];else p1+=a[cls2];
	p2=p1;pmax=p2;
	while(cls1<=cls2)
	{
		p1=0;p2=0;
		cls1++;
		for(i=1;i<=n;i++)
			if(a[i]>=a[cls2])p1+=a[cls2];else if(a[i]>=a[cls1])p1+=a[cls1];
		cls1--;cls2--;
		for(i=1;i<=n;i++)
			if(a[i]>=a[cls2])p2+=a[cls2];else if(a[i]>=a[cls1])p2+=a[cls1];
		cls2++;
		if(p1>pmax){pmax=p1;}else if(p2>pmax){pmax=p2;}
		if(p1>=p2)cls1++;else cls2--;
	}
	printf("%d\n",pmax+4);
	return 0;
}