Cod sursa(job #1650718)

Utilizator raluca1234Tudor Raluca raluca1234 Data 11 martie 2016 20:03:37
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <cstring>
#define MAX_G 10000
using namespace std;

int d[MAX_G+5];
inline int mymax(int x, int y){
    return (x>y ? x : y);
}

int main(){
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    int n, p, g, G, i, j, dr, ans;
    scanf("%d%d", &n, &G);
    memset(d, 0xff, sizeof(d));
    d[0]=0;
    dr=0;
    for (i=1; i<=n; i++){
        scanf("%d%d", &g, &p);
        for (j=dr; j>=0; j--){
            if (j+g<=G)
                if (d[j]!=-1){
                    d[j+g]=mymax(d[j+g], d[j]+p);
                    if (j+g>dr)
                        dr=j+g;
                }
        }
    }
    ans=0;
    for (i=1; i<=G; ++i)
        ans=mymax(d[i], ans);
    printf("%d\n", ans);
    return 0;
}