Pagini recente » Cod sursa (job #2142940) | Cod sursa (job #2774564) | Cod sursa (job #1959714) | Cod sursa (job #1276485) | Cod sursa (job #1477690)
#include <cstdio>
#include <algorithm>
#include <cstring>
#define WMAX 5007
#define inf 1000000007
using namespace std;
FILE *fin, *fout;
int g, w, e, c, dp[2][WMAX];
bool line, prev;
void citire()
{
memset(dp, inf, sizeof(dp));
dp[0][0] = 0;
dp[1][0] = 0;
scanf("%d %d", &g, &w);
for(int i = 1; i<= g; ++i)
{
scanf("%d %d", &e, &c);
line = (i&1);
prev = !line;
for(int j = 0; j<= w; ++j)
{
dp[line][j] = dp[prev][j];
if(j - e >= 0)
{
dp[line][j] = min(dp[prev][j], dp[prev][j-e] + c);
}
}
//for(int j = 0; j<= w; ++j) printf("%d ", dp[line][j]); printf("\n");
}
}
void afisare()
{
if(dp[g&1][w] == inf) printf("-1\n");
else printf("%d\n", dp[g&1][w]);
}
int main()
{
fin = freopen("energii.in", "r", stdin);
fout = freopen("energii.out", "w", stdout);
citire();
afisare();
fclose(fin);
fclose(fout);
return 0;
}