Pagini recente » Cod sursa (job #1735923) | Cod sursa (job #830373) | Cod sursa (job #815366) | Cod sursa (job #2640574) | Cod sursa (job #2505977)
///https://www.infoarena.ro/problema/rucsac
#include <bits/stdc++.h>
using namespace std;
void egyezes (int a[][9999], int n, int m)
{
for (int i=0;i<=n;i++)
for (int j=0;j<=m;j++)
{
if (i==0 && j==0) a[i][j]=0;
else a[i][j]=-1;
}
}
int main()
{
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,h;
f>>n>>h;
int a[9999][9999];
for (int i=1;i<=n;i++)
{
for (int j=1;j<=h;j++) a[i][j]=-1;
}
struct adat
{
int sz,pro;
}d[999];
for (int i=1;i<=n;i++)
{
f>>d[i].sz>>d[i].pro;
}
egyezes (a,n,h);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=h;j++)
{
if (j>=d[i].sz && a[i-1][j-d[i].sz])
{
a[i][j]=max(a[i-1][j], a[i-1][j-d[i].sz]+d[i].sz);
}
else a[i][j]=a[i-1][j];
}
}
g<<a[n][h];
return 0;
}