Pagini recente » Cod sursa (job #1704510) | Cod sursa (job #868722) | Cod sursa (job #2888349) | Cod sursa (job #1501962) | Cod sursa (job #2507491)
#include <bits/stdc++.h>
#define nmax 10005
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
int dp[nmax][nmax], n, g, gr[nmax], p[nmax], minn;
int main()
{
fin >> n >> g;
for (int i = 1; i <= n; i++)
{
fin >> gr[i] >> p[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= g; j++)
dp[1][j] = dp[2][j];
for (int j = 1; j <= g; j++)
{
if ((j - gr[i]) >= 0)
{
dp[2][j] = max(dp[1][j], dp[1][j - gr[i]] + p[i]);
}
else dp[2][j] = dp[1][j];
}
}
int ok = 0;
for (int i = 1; i <= 2; i++)
{
for (int j = 1; j <= g && ok == 0; j++)
{
if (dp[i][j] >= g)
{
minn = dp[i][j];
ok = 1;
}
}
}
/*
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= g; j++) fout << dp[i][j] << ' ';
fout << '\n';
}
*/
if (minn == 0) minn = -1;
fout << minn;
return 0;
}