Cod sursa(job #1277004)

Utilizator MihneaGhiraMihnea MihneaGhira Data 27 noiembrie 2014 01:08:40
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<cstring>
#define INF 50000001
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int max(int a,int b){
    if(a>b)
        return a;
    else
        return b;
}
int n,g,i,j,sol,maxim;
int G[5003],d[100001],P[5003];
int main(){
    fin>>n>>g;
    for(i=1;i<=n;i++) {
        fin>>G[i]>>P[i];
    }
    for(i=1;i<=g;i++)
        d[i]=-INF;
    d[0]=0;
    for(i=1;i<=n;i++) {
        for(j=g;j>=0;j--)
            if(d[j]!=-INF) {
                if(j+G[i]<=g) {
                    d[j+G[i]]=max(d[j+G[i]],d[j]+P[i]);
                    sol=max(sol,d[j+G[i]]);
                }
            }
    }
    fout<<sol;
    return 0;
}