Cod sursa(job #750385)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 21 mai 2012 23:22:15
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 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;
 
 void citire()
 {
	 f >> N >> G;
	 for ( int i = 1 ; i <= N ; i++ )
		 f >> E[ i ] >> C[ i ];
 }
 
 void rezolva()
 {
	 int i, j, ok = 0;
	 for ( i = 1 ; i <= N ; i++ )
		 for ( j = 0 ; j <= G + G ; j++ )
		 {
			 A[ i ][ j ] = inf;
			 
			 if ( C[ i ] <= j )
				 A[ i ][ j ] = max( A[ i - 1 ][ j ], A[ i - 1 ][ j - C[ i ] ] + E[ i ] );
			 else
				 A[ i ][ j ] = A[ i - 1 ][ j ];
		 }
		 for ( i = 0 ; i <= G + G ; i++ )
			 if ( A[ N ][ i ] >= G && A[ N ][ i ] != inf )
			 {
				 g << i << "\n";
				 ok = 1;
				 break;
			 }
			 
			 if ( ok == 0 )
				 g << - 1 << "\n" ;
	 //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();
	// afisare();
	 return 0;
 }