Cod sursa(job #1348086)

Utilizator dinuvldVlad Dinu dinuvld Data 19 februarie 2015 15:09:06
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb

#include <fstream>
#include <algorithm>

using namespace std;

int main()
{
  ifstream cin("rucsac.in");
  ofstream cout("rucsac.out");
    
    int d[10001];
    int n, G, p, gr, i, max1, j, pmax = 0;
    
    cin>>n;
    cin>>G;
    
    for (i = 1; i <= G; i++)
        d[i] = -1;
    
    max1 = 0;
    
    for (i = 1; i <= n; i++)
    {
        cin >> gr >> p;
        for (j = max1; j >= 0; j--)
        {
            if (d[j] != -1 && j + gr <= G)
            {
                d[j + gr] = max(d[j + gr], d[j] + p);
                if ( max1 < j+gr )
                {
                    max1 = j + gr;
                }
            }
        }
    }
    
    for (i = G; i >= 1; i--)
    {
        if (d[i] > pmax)
            pmax = d[i];
    }
    cout << pmax;
        
    
        
}