Pagini recente » Cod sursa (job #210613) | Cod sursa (job #2149738) | Cod sursa (job #3166263) | Cod sursa (job #720684) | Cod sursa (job #2162669)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
struct db{
int gr, pr;
}a[5005];
long long dp[3][10005];
int n, g;
void Citire()
{
fin >> n >> g;
for(int i = 1; i <= n; i++)
fin >> a[i].gr >> a[i].pr;
}
void Rez()
{
dp[0][a[1].gr] = a[1].pr;
int lin = 0;
for(int i = 2; i <= n; i++)
{
lin = 1 - lin;
for(int j = 1; j <= g; j++)
if(j >= a[i].gr)
dp[lin][j] = max(dp[1 - lin][j],
dp[1 - lin][j - a[i].gr]
+ a[i].pr);
else dp[lin][j] = dp[1 - lin][j];
}
long long maxim = -1;
for(int i = 1; i <= g; i++)
maxim = max(maxim, dp[lin][i]);
fout << maxim << "\n";
}
int main()
{
Citire();
Rez();
return 0;
}