Cod sursa(job #585643)

Utilizator PatrikStepan Patrik Patrik Data 30 aprilie 2011 10:35:42
Problema Avioane Scor 0
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 0.91 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()
	{
		best1 = r1 = v[1] ;
		best2 = r2 = v[2] ;
		for ( long i = 3 ; i<= n ; ++i )
		{
			if(best2 + r2 + best1 >= v[i] + best1 +r1 )
			{
				best2+=r2;
			}
			else
			{
				best1 = best2+r1;
				r1 = r2 ;
				best2 = r2 = v[i] ;
			}
		}
	}
	
	void tipar()
	{
		g=fopen("avioane.out" , "w" );
		fprintf(g , "%lld" , best1+best2 );
		fclose(g);
	}