Cod sursa(job #1686450)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 12 aprilie 2016 11:36:04
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;

int ans[10005]={-1};

int main(void){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    memset(ans,-1,sizeof(ans));

    int n,g,l,r,p,w;
    ans[0]=0;
    l=0;
    r=0;

    scanf("%d%d",&n,&g);
    for(int i=0; i<n; ++i){
        scanf("%d%d",&w,&p);
        for(int j=l; j>=0; --j){
            if(ans[j]==-1)
                continue;
            if(j+w<=g){
                ans[j+w]=max(ans[j+w], ans[j]+p);
                l=max(l, j+w);
            }
        }
    }
    for(int i=0; i<=g; ++i)
        r=max(r,ans[i]);
    printf("%d",r);
    return 0;
}