Pagini recente » Cod sursa (job #67054) | Cod sursa (job #2540984) | Cod sursa (job #1080417) | Cod sursa (job #3174675) | Cod sursa (job #465196)
Cod sursa(job #465196)
#include <iostream>
#include <fstream>
#define INF 23958198
using namespace std;
const char iname[] = "energii.in";
const char oname[] = "energii.out";
const int gmax = 1005;
const int emax = 10005;
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];
}
for(i = W - 1; i <= W + 100000; i ++)
if(dp[G][i] != 0 && dp[G][i] != INF)
{
fout << dp[G][i];
break;
}
if(i == 101001)
fout << "-1";
return 0;
}