Cod sursa(job #1899688)

Utilizator felipeGFilipGherman felipeG Data 2 martie 2017 21:23:54
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
using namespace std;

ifstream f ("rucsac.in");
ofstream g ("rucsac.out");

int n, G, D[ 2 ][ 10000 ];

struct cell
{
    int w, p;
}v[ 5001 ];

void read()
{
    int i = 0;

    f >> n >> G;

    for ( i = 1; i <= n; ++ i )
        f >> v[ i ].w >> v[ i ].p;
}

void solve()
{
    int i, j, s = 0;

    for ( i = 1; i <= n; ++ i, s = 1 - s )
    {
        for ( j = 0; j <= G; ++ j )
        {
            D[ 1 - s ][ j ] = D[ s ][ j ];

            if ( v[ i ].w <= j )
                D[ 1 - s ][ j ] = max( D[ 1 - s ][ j ], D[ s ][ j - v[ i ].w ] + v[ i ].p );
        }
    }

     g << D[ s ][ G ];
}

int main()
{
    read();
    solve();

    f.close();
    g.close();
    return 0;
}