Cod sursa(job #1997876)

Utilizator Y0da1NUME JMECHER Y0da1 Data 5 iulie 2017 17:42:07
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n, g, Pmax;
int P[5010], G[10010];
//int D[5010][10010];
int a[10010];
int b[10010];
int *aux, *curr, *prv;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
int main()
{
    int i,j;
    curr=a;
    prv=b;
    in>>n>>g;
    for(i=1;i<=n;i++)
        in>>G[i]>>P[i];
    //dinamica
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=g;++j)
        {
            //D[i][j]=D[i-1][j];
            //if(G[i]<=j)
             //   D[i][j] = max(D[i][j], D[i - 1][j - G[i]] + P[i]);
            curr[j]=prv[j];
            if(G[i]<=j)
                curr[j] = max(curr[j], prv[j-G[i]] + P[i]);



        }
        aux =prv;
        prv = curr;
        curr = aux;
    }
    //Pmax=D[n][g];
    Pmax = prv[g];
    out<<Pmax;
    return 0;
}