Pagini recente » Cod sursa (job #678426) | Cod sursa (job #617030) | Cod sursa (job #1249852) | Cod sursa (job #852691) | Cod sursa (job #2676005)
#include <bits/stdc++.h>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
const int INF = (1 << 28);
int n, energie;
int e[10005], dp[2][10005], cost[10005];
int main()
{
f >> n >> energie;
for(int i = 1; i <= n; i++)
f >> e[i] >> cost[i];
for(int i = 1; i <= n; i++)
for(int j = 1; j <=energie; j++)
if(j >= e[i])
if(dp[(i - 1) % 2][j - e[i]] == 0 && j - e[i] != 0)
dp[i % 2][j] = dp[(i - 1) % 2][j];
else if(dp[(i - 1) % 2][j] == 0)
dp[i % 2][j] = dp[(i - 1) % 2][j - e[i]] + cost[i];
else
dp[i % 2][j] = min(dp[(i - 1) % 2][j], dp[(i - 1) % 2][j - e[i]] + cost[i]);
if(dp[n % 2][energie] == INF)
g << -1 ;
else
g << dp[n % 2][energie];
return 0;
}