Pagini recente » Cod sursa (job #168524) | Cod sursa (job #1317596) | Cod sursa (job #3282617) | Cod sursa (job #1353406) | Cod sursa (job #781368)
Cod sursa(job #781368)
#include <iostream>
#include <stdio.h>
using namespace std;
int P[5010],G[5010];
int a[2][10010];
int n,m;
int max(int a,int b){
if (a>=b) return a; else return b;
}
void afis()
{
int i,j;
for (i=0; i<2; i++)
{
for (j=0; j<=m; j++) printf("%i ",a[i][j]);
printf("\n");
}
}
void ruxac()
{
int i,j;
for (i=1; i<=n; i++)
{
for (j=0; j<=m; j++)
{
if (i%2==1) {
a[1][j]=a[0][j];
if (G[i]<=j) a[1][j]=max(a[1][j],a[0][j-G[i]]+P[i]);
} else {
a[0][j]=a[1][j];
if (G[i]<=j) a[0][j]=max(a[0][j],a[1][j-G[i]]+P[i]);
}
}
}
}
int main()
{
int i;
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%i%i",&n,&m);
for (i=1; i<=n; i++) scanf("%i%i",&G[i],&P[i]);
ruxac();
printf("%i",a[n%2][m]);
return 0;
}