Pagini recente » Cod sursa (job #3041612) | Cod sursa (job #1385416) | Cod sursa (job #1986838) | Cod sursa (job #1741253) | Cod sursa (job #1774697)
#include <stdio.h>
#include <stdlib.h>
FILE *in,*out;
int r[50000000],w[5001],p[5001];
int min(int a,int b)
{
if(a >= b && b != 0) return b;
if(a <= b && a != 0) return a;
}
int main()
{
in = fopen("rucsac.in","r");
out = fopen("rucsac.out","w");
int n,g,i,j,fmax = 0;
fscanf(in,"%d %d\n",&n,&g);
for(i = 1; i <= n; i ++)
fscanf(in,"%d %d\n",&w[i],&p[i]);
r[0] = 1;
for(i = 1; i <= n; i ++)
{
for(j = fmax; j >= 0; j --)
{
if(r[j] != 0 && r[j] + w[i] <= g+1)
{
r[p[i] + j] = min(r[j] + w[i],r[p[i] + j]);
if(p[i] + j > fmax)
fmax = p[i] + j;
}
}
}
fprintf(out,"%d",fmax);
return 0;
}