Cod sursa(job #1881510)

Utilizator blackmanta45Andrei blackmanta45 Data 16 februarie 2017 15:56:29
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define g first
#define p second
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
pair <int,int> v[10010];
//D[i] = indicele ultimului element dintr-un sir cu suma i
//P[i] = profitul maxim sa obtin greutatea i
int G,n,P[10010],i,j,sol;
bool D[10010];
int main () {
    fin>>n>>G;
    for(i=1;i<=n;i++)
        fin>>v[i].g>>v[i].p;
    D[0] = 1;
    for(i=1;i<=n;i++){
        for(j=G;j>=0;j--){
            if(D[j]!=0 && j+v[i].g <= G)
                if(P[j+v[i].g]<P[j]+v[i].p){
                    D[j+v[i].g]=1;
                    P[j+v[i].g]=P[j]+v[i].p;
                    sol = max(sol, P[j+v[i].g]);
                }
        }
    }
    fout<<sol;
}