Cod sursa(job #942377)

Utilizator Vlad.PPetcu Vlad Vlad.P Data 22 aprilie 2013 10:20:07
Problema Problema rucsacului Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
struct thing{
    int w,p;
};
vector<int> d1,d2;
vector<thing> v;
int main(){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,g;
    thing temp;
    temp.w=temp.p=0;
    scanf("%d%d",&n,&g);
    d1.push_back(0);
    d2.push_back(0);
    v.push_back(temp);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&temp.w,&temp.p);
        v.push_back(temp);
    }
    for(int i=1;i<=g;i++){
        d1.push_back(0);
        d2.push_back(0);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=g;j++){
            if(j<v[i].w){
                d2[j]=d1[j];
                continue;
            }
            d2[j]=d1[j]>d1[j-v[i].w]+v[i].p?d1[j]:d1[j-v[i].w]+v[i].p;
        }
        for(int j=0;j<=g;j++){
            d1[j]=d2[j];
        }
    }
    printf("%d\n",d2[g]);
    return 0;
}