Pagini recente » Cod sursa (job #1714951) | Cod sursa (job #2741129) | Cod sursa (job #282947) | Cod sursa (job #1031336) | Cod sursa (job #773268)
Cod sursa(job #773268)
# 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;
}