Pagini recente » Borderou de evaluare (job #2017072) | Cod sursa (job #2694875) | Cod sursa (job #2793185) | Cod sursa (job #2504577) | Cod sursa (job #465182)
Cod sursa(job #465182)
#include <iostream>
#include <fstream>
using namespace std;
const char iname[] = "energii.in";
const char oname[] = "energii.out";
const int gmax = 1005;
const int emax = 5005;
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 <= 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; i <= W + 2000; i ++)
if(dp[G][i] != 0)
{
fout << dp[G][i];
break;
}
return 0;
}