Cod sursa(job #1767750)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 29 septembrie 2016 17:49:49
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<string.h>
#include<stdio.h>
#include<vector>
#include<algorithm>
const int NMAX = 5000;
const int GMAX = 10000;
using namespace std;
struct OBIECT {
    int w, p;
}v[NMAX+5];
int d[GMAX+5];
int main() {
    freopen ( "rucsac.in", "r", stdin );
    freopen ( "rucsac.out", "w", stdout );
    int n, g, w, p, i, j, my_max;
    scanf ( "%d%d", &n, &g );
    for ( i = 1 ; i <= n ; ++ i ) {
        scanf ( "%d%d", &w, &p );
        v[i].w = w;
        v[i].p = p;
    }
    my_max = 0;
    for( i = 1 ; i <= n ; ++i ) {
        for( j = g - v[i].w ; j >= 0 ; --j ) {
            if( d[j+v[i].w] < d[j] + v[i].p ) {
                d[j+v[i].w] = d[j] + v[i].p;
                if( d[j+v[i].w] > my_max )
                    my_max = d[j+v[i].w];
            }
        }
    }
    printf("%d", my_max);
    return 0;
}