Cod sursa(job #773268)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 1 august 2012 12:23:32
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
 # include <fstream>
 # include <cstring>
 # include <algorithm>
 
 # define dim1 10001
 # define dim2 1001
 # define dim3 5001
 # define inf 999999
 
 using namespace std;
 
 ifstream f("energii.in");
 ofstream g("energii.out");
 
 int E[ dim1 ], C[ dim1 ];
 int A[ dim2 + dim2 ][ dim3 ];
 int N, G, energie ;
 
 void citire()
 {
	 f >> N >> G;
	 for ( int i = 1 ; i <= N ; i++ )
	 {
		 f >> E[ i ] >> C[ i ];
	 }
	 
	 for ( int i = 0 ; i <= G ; i++ )
		 A[ 0 ][ i ] = inf;
	 A[ 0 ][ 0 ] = 0;
 }
 
 void rezolva()
 {
	 int i, j, ok = 0;
	 for ( i = 1 ; i <= N ; i++ )
		 for ( j = 0 ; j <= G ; j++ )
		 {
			  //A[ i ][ j ] = inf;
			  A[ i ][ j ] = A[ i - 1 ][ j ];
			 
			 if ( C[ i ] <= j )
				 A[ i ][ j ] = max( A[ i - 1 ][ j ], A[ i - 1 ][ j - C[ i ] ] + E[ i ] );
			 else
				 if ( C[ i ] > j )
					 A[ i ][ j ] = min( A[ i ][ j ], C[ i ] );
		 }
		 
		 if ( A[ N ][ G ] == inf )
			 g << -1 << "\n";
		 else
			 g << A[ N ][ G ];
 }
 
 void afisare()
 {
	 int i, j;
	 for ( i = 1 ; i <= N ; i++ )
	 {
		 for ( j = 0 ; j <= G + G ; j++ )
			 g << A[ i ][ j ] << " ";
		 g << "\n";
	 }
 }
 
 int main()
 {
	 citire();
	 rezolva();
	 return 0;
 }