Pagini recente » Cod sursa (job #2388360) | Cod sursa (job #465205)
Cod sursa(job #465205)
#include <iostream>
#include <fstream>
#define INF 239581982
using namespace std;
const char iname[] = "energii.in";
const char oname[] = "energii.out";
const int gmax = 1005;
const int emax = 100025;
ifstream fin(iname);
ofstream fout(oname);
int G, W, E[gmax], C[gmax], dp[gmax][emax], i, j ;
int main()
{
fin >> G >> W;
for(i = 1; i <= G; i ++)
fin >> E[i] >> C[i];
//dp[1][E[1]] = C[1];
for(i = 1; i <= W; i ++)
dp[0][i] = INF;
for(i = 1; i <= G; i ++)
for(j = 0; j <= W; j ++)
{
//dp[i][E[i]] = C[i];
if(dp[i - 1][j] != 0)
dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - E[i]] + C[i]);
else
if(j - E[i] >= 0 && dp[i - 1][j - E[i]] != 0)
dp[i][j] = dp[i - 1][j - E[i]] + C[i];
}
int minim = INF;
for(i = 1; i <= G; i ++)
for(j = W ; j <= W + 40; j ++)
if(dp[i][j] != 0 && dp[i][j] != INF && dp[i][j] < minim)
minim = dp[i][j];
if(minim != INF)
fout << minim;
else
fout << "-1";
return 0;
}