Cod sursa(job #759025)

Utilizator MarquiseMarquise Marquise Data 16 iunie 2012 15:30:09
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#define NMAX 10001

using namespace std;

int n, g, w, p, r[NMAX];


int main()
{
    int i, j, max;
    
    FILE *in = fopen("rucsac.in", "r");
    FILE *out = fopen("rucsac.out", "w");
    
    fscanf(in, "%d %d", &n, &g);
    for ( i = 1; i <= n; i++)
    {
        fscanf(in, "%d %d", &w, &p);
        for ( j = g; j >= 1; j--)
            if ( r[j] != 0 && j + w <= g && p + r[j] > r[w + j])
               r[ w + j] = p + r[j];
               
        if ( p > r[w] )
           r[w] = p;
    }
    
    max = r[g];
    for ( i = g - 1; i >= 1; i--)
        if ( r[i] > max)
           max = r[i];
           
    fprintf(out, "%d\n", max);       
    
    fclose(in);
    fclose(out);
    return 0;
}