Cod sursa(job #1774620)
Utilizator | Stoica Alexandru caesar2001 | Data | 9 octombrie 2016 10:55:39 |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.64 kb |
#include <stdio.h>
#include <stdlib.h>
FILE *in,*out;
int r[10001],w[5001],p[5001];
int main()
{
in = fopen("rucsac.in","r");
out = fopen("rucsac.out","w");
int n,g,i,j,max = 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 = max; j >= 0; j --)
{
if(r[j] != 0 && r[j] <= g)
{
r[p[i] + j] = r[j] + w[i];
if(p[i] + j > max)
max = p[i] + j;
}
}
}
fprintf(out,"%d\n",max);
return 0;
}