Cod sursa(job #585664)

Utilizator PatrikStepan Patrik Patrik Data 30 aprilie 2011 10:50:24
Problema Avioane Scor 0
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 1.06 kb
	#include<stdio.h>
	#include<algorithm>
	using namespace std;
	#define MAX 100001
	FILE *f , *g ;
	long n , v[MAX];
	long long best1 , best2 , r1 , r2 ;
	
	void citire();
	void sortare();
	void solve();
	void tipar();
	
	int main()
	{
		citire();
		sortare();
		solve();
		tipar();
		return 0;
	}
	
	void citire()
	{
		f=fopen("avioane.in" , "r" );
		fscanf(f , "%ld" , &n );
		for ( long i = 1 ; i<= n ; ++i )
			fscanf(f , "%ld" , &v[i] );
		fclose(f);
	}
	
	void sortare()
	{
		sort(v+1 , v+n+1 );
	}
	
	void solve()
	{
		if(v[1] == v[2])
		{
			r2 = v[2];
			best2 = v[2]*2;
		}
		else
		{
			best1 = r1 = v[1];
			best2 = r2 = v[2];
		}
			for ( long i = 3 ; i <= n ; ++i )
			{
				/*if(v[i] == best2)
				{
					best2+= v[i] ;
					continue;
				}*/
				if(best2 + r2 + best1 >= best2 + v[i] )
					best2+=r2;
				else
				{
					best1 = best2 ;
					r1 = r2;
					best2 = r2 = v[i];
				}
			}
	}
	
	void tipar()
	{
		g=fopen("avioane.out" , "w" );
		fprintf(g , "%lld" , best1+best2 );
		fclose(g);
	}