Cod sursa(job #1417837)

Utilizator raddudjPogonariu Radu raddudj Data 11 aprilie 2015 11:04:32
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int d[10001];

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