Cod sursa(job #1240497)

Utilizator ConstantinPetroviciPetrovici Constantin ConstantinPetrovici Data 11 octombrie 2014 14:38:42
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

struct obiect
{
    int w,p;
};obiect v[100000];

int d[100000] ;

int main()
{
    freopen ("rucsac.in" , "r" , stdin );
    freopen ("rucsac.out" , "w" , stdout );
    int n , g ;
    int profit=0 ;
    scanf ("%d%d" , &n , &g ) ;
    for ( int i = 1 ; i <= n ; ++i )
        scanf ("%d%d" , &v[i].w , &v[i].p ) ;
    d[0]=1;
    for ( int i = 1 ; i <= n ; ++i )
        for ( int j = g ; j >= 0 ; --j )
            if( d[j] and (j+v[i].w)<=g )
                d[j+v[i].w]=max(d[j+v[i].w],d[j]+v[i].p);
    int maxi=0;
    for ( int i = 1 ; i <= g ; ++i )
        if (d[i]>maxi)maxi=d[i];
    printf ("%d\n" , maxi-1 ) ;
    return 0;
}