Pagini recente » Cod sursa (job #2376425) | Cod sursa (job #2943112) | Cod sursa (job #3272370) | Cod sursa (job #8700) | Cod sursa (job #1870103)
#include<stdio.h>
using namespace std;
#define MAXN 5001
#define MAXG 10001
int g[MAXN], p[MAXN], d[2][MAXG];
//D[i][j] - profitul maxim pe care-l putem obtine adaugand o submultime a primelor i obiecte, insumand greutatea j
int main(){
FILE*fin=fopen("rucsac.in", "r");
FILE*fout=fopen("rucsac.out", "w");
int n, gtot, i, j, max;
fscanf(fin, "%d%d", &n, >ot);
for(i=1; i<=n; i++)
fscanf(fin, "%d%d", &g[i], &p[i]);
max=0;
for(i=1; i<=n; i++){
for(j=0; j<=gtot; j++){
d[1][j]=d[0][j];
if(g[i]<=j)
if(d[0][j-g[i]]+p[i]>d[1][j])
d[1][j]=d[0][j-g[i]]+p[i];
if(d[1][j]>max)
max=d[1][j];
}
for(j=0; j<=gtot; j++){
d[0][j]=d[1][j];
d[1][j]=0;
}
}
fprintf(fout, "%d", max);
return 0;
}