Cod sursa(job #2005824)

Utilizator whitewolf3131Ursu Laurentiu Cristian whitewolf3131 Data 28 iulie 2017 12:17:40
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>

using namespace std;
struct object{
    int gre, val;
};
const int S = 10005;
object c[5005];
int sume[S];
int sum, r;
int main()
{
	FILE *in, *out;
	in = fopen("rucsac.in", "r");
	out = fopen("rucsac.out", "w");
	int n, g;
	fscanf(in, "%d%d", &n, &g);
	object ob;
	for(int i=0; i<n; i++){
        fscanf(in, "%d%d", &ob.gre, &ob.val);
        c[i]=ob;
	}
	int j, i;
	for (i = 0; i < n; i++)
    {
        for (j = g; j >= c[i].gre; j--)
        {
            if ((sume[j - c[i].gre] != 0 || j - c[i].gre == 0) && sume[j - c[i].gre] + c[i].val > sume[j])
                sume[j] = sume[j - c[i].gre] + c[i].val;
        }

    }
    int maxi=0;
    for(i=1; i<=g; i++){
        if(sume[i]>maxi){
            maxi=sume[i];
        }
    }
    fprintf(out, "%d", maxi);
	return 0;
}