Cod sursa(job #1804193)

Utilizator TibiraducanuTiberiu Raducanu Tibiraducanu Data 12 noiembrie 2016 12:21:36
Problema Problema rucsacului Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int G=10005;
int n,g,w,p,maxx,d[G];

int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);

    scanf("%d%d",&n,&g);

    for(int k=1;k<=n;k++){
        scanf("%d%d",&w,&p);
        if(w>g or p==0) continue;

        for(int j=min(maxx, g-w);j>=0;j--){
            if(d[j+w]<d[j]+p){
                d[j+w]=d[j]+p;
                if(j+w>maxx) maxx=j+w;
            }
        }
    }

    for(int i=g;i>=0;i--)
        if(d[i]){
            printf("%d\n",d[i]);
            break;
        }

    return 0;
}