Pagini recente » Cod sursa (job #1539462) | Cod sursa (job #2297221) | Cod sursa (job #3207075) | Cod sursa (job #985004) | Cod sursa (job #1718241)
#include <cstdio>
#include <algorithm>
#define WMAX 5007
#define inf 1000000007
using namespace std;
FILE *fin, *fout;
int g, w, e, c, dp[2][WMAX];
void citire()
{
for(int i = 1; i< WMAX; ++i)
{
dp[0][i] = inf;
dp[1][i] = inf;
}
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);
int line = (int)(i&1), prev = !line;
for(int j = 1; j< WMAX; ++j) dp[line][i] = inf;
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);
}
else dp[line][j] = min(dp[prev][j], c);
}
//for(int j = 0; j<= w; ++j) printf("%d ", (dp[line][j] == inf)?-1: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;
}