Cod sursa(job #923091)

Utilizator ephgstefana gal ephg Data 22 martie 2013 21:50:48
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
using namespace std;

#define BM 10005
#define BN 5005
#define per pair<int,int>
#define w first
#define p second

int pot[BM],gr[BM];
per a[BN];
int n,G;

int main (){
    int i,j;
    ifstream f("rucsac.in");
    ofstream g("rucsac.out");
    f>>n>>G;
    pot[0]=1;
    for(i=1;i<=n;++i)f>>a[i].w>>a[i].p;
    for(i=1;i<=n;++i)for(j=BM-5;j>=0;--j)if(pot[j]&&j+a[i].p<=BM-5){
        if(pot[j+a[i].p])gr[j+a[i].p]=min(gr[j+a[i].p],gr[j]+a[i].w);
        else if(gr[j]+a[i].w<=G)pot[j+a[i].p]=1,gr[j+a[i].p]=gr[j]+a[i].w;
    }
    for(j=BM-5;j;--j)if(pot[j]){
        g<<j;
        return 0;
    }
    return 0;
}