Cod sursa(job #1150710)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 23 martie 2014 14:25:07
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<cstdio>
#include<vector>
using namespace std;
#define maxn 5002
#define maxg 10003
unsigned int n,G;
struct pereche{
    int gr,pr;
};
vector <int> l1(maxg),l2(maxg);

pereche P[maxn];
int main(){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d%d",&n,&G);
    l1.resize(maxg);
    l2.resize(maxg);
    for(int i=1;i<=n;++i){
            scanf("%d%d",&P[i].gr,&P[i].pr);
    }
    l1[0]=0;
    for(int i=1;i<=G;++i)
        if(i==P[1].gr)
             l1[i]=P[1].pr;
        else
            l1[i]=l1[i-1];
    l2[0]=0;

    for(int i=2;i<=n;++i){


        l2[0]=0;
        for(int j=1;j<=G;++j)
            if(j-P[i].gr>=0)
                //l2.push_back(max(l1[j], l1[j-P[i].gr]+P[i].pr));
                l2[j]=max(l1[j], l1[j-P[i].gr]+P[i].pr);
            else
                l2[j]=l1[j];
                //l2.push_back(l1[j]);
        l1=l2;


    }
    printf("%d",l2[G]);
    return 0;
}