Cod sursa(job #877185)

Utilizator TeOOOVoina Teodora TeOOO Data 12 februarie 2013 17:37:52
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

//Definitii
#define weight first
#define cost second

//Constante
const int sz = (int)5e4+1;
const int szy = (int)1e5+1;

FILE *in,*out;

int num, weightM;
int matrix[sz][szy];
pair<int, int> object[sz];

int main()
{
    in=fopen("rucsac.in","rt");
    out=fopen("rucsac.out","wt");

    fscanf(in,"%d%d",&num,&weightM);
    for(int i=1; i<=num; ++i)
        fscanf(in,"%d%d",&object[i].weight,&object[i].cost);

    for(int i=1; i<=num; ++i)
        for(int j=1; j<=weightM; ++j)
        {
            if(object[i].weight <= j)
                matrix[i][j] = max(matrix[i-1][j], matrix[i-1][j-object[i].weight]+object[i].cost);
            else
                matrix[i][j] = matrix[i-1][j];
        }
    fprintf(out,"%d",matrix[num][weightM]);

    fclose(in);
    fclose(out);
    return 0;
}