Cod sursa(job #1552798)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 18 decembrie 2015 17:54:30
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;

int d[10005];

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