Cod sursa(job #1880555)

Utilizator jason2013Andronache Riccardo jason2013 Data 15 februarie 2017 20:22:52
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<bits/stdc++.h>
using namespace std;

FILE *in = fopen("rucsac.in", "r");
FILE *out = fopen("rucsac.out", "w");

const int nmax = 5005;
int n, g;
int rez[nmax][nmax*2];
int wi[nmax], pi[nmax];

inline void read()
{
    fscanf(in, "%d%d", &n, &g);
    for(int i = 1; i <= n; i++)
    {
        int x, y;
        fscanf(in, "%d%d", &x, &y);
        wi[i] = x; pi[i] = y;
    }
}

inline void dinamica()
{
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= g; j++){
            if( wi[i] > j )
                rez[i][j] = rez[i-1][j];
            else
                rez[i][j] = max(rez[i-1][j-wi[i]] + pi[i], rez[i-1][j]);
        }
    }
}

inline void print()
{
    fprintf(out, "%d", rez[n][g]);
}

int main()
{
    read();
    dinamica();
    print();
    return 0;
}