Cod sursa(job #1747822)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 25 august 2016 17:16:53
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
using namespace std;
int w[5001], p[5001], d[10001];
int rucsac(int n, int s){
    int i, j, max = 0;
    for (i = 1; i <= n; i ++){
        for (j = s - w[i]; j >= 0; j --){
            if (j + w[i] <= s){
                if (d[j + w[i]] < p[i] + d[j]){
                    d[j + w[i]] = p[i] + d[j];
                    if (p[i] + d[j] > max)
                        max = p[i] + d[j];
                }
            }
        }
    }
    return max;
}
int main(){
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    int n, s, i;
    scanf("%d%d", &n, &s);
    for (i = 1; i <= n; i ++)
        scanf("%d%d", &w[i], &p[i]);
    printf("%d\n", rucsac(n, s));
    return 0;
}