Pagini recente » Istoria paginii utilizator/upb_opriceana_cristina | Statistici Horoba Marcel Emanuel (horobamarcel) | Rating Dragan Mihai (Misu) | Monitorul de evaluare | Cod sursa (job #1515074)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int maxn = 1005;
const int maxg = 5005;
const int inf = 0x3f3f3f3f;
int E[maxn];
int C[maxn];
int dp[maxn][maxg];
int main()
{
int n, W;
in >> n >> W;
for(int i = 1; i <= n; i++)
in >> E[i] >> C[i];
int suma = 0;
for(int i = 1; i <= n; i++)
suma = suma + E[i];
if(suma < W)
{
out << -1;
return 0;
}
memset(dp, inf, sizeof(dp));
dp[0][0] = 0;
for(int i = 1; i <= n; i++)
{
for(int j = 0; j <= W; j++)
{
dp[i][j] = dp[i - 1][j];
if(j >= E[i])
dp[i][j] = min(dp[i][j], dp[i-1][j-E[i]] + C[i]);
}
}
out << dp[n][W];
return 0;
}