Cod sursa(job #1040923)

Utilizator andi12Draghici Andrei andi12 Data 25 noiembrie 2013 10:04:31
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include<cstdio>
using namespace std;
struct fm{
int gr;
int prof;
};
struct vm{
int pr;
bool mar;
};
fm v[5005];
vm rucsac[10005];
int main()
{
    FILE *in,*out;
    in=fopen("rucsac.in","r");
    out=fopen("rucsac.out","w");
    int n,i,j,g,max=0;
    fscanf(in,"%d%d",&n,&g);
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d%d",&v[i].gr,&v[i].prof);
    }
    rucsac[0].mar=true;
    for(i=1;i<=n;i++)
    {
        for(j=10000;j>=0;j--)
        {
            if(rucsac[j].mar==true)
            {
                if(rucsac[j+v[i].gr].mar==false)
                {
                    rucsac[j+v[i].gr].mar=true;
                    rucsac[j+v[i].gr].pr=rucsac[j].pr+v[i].prof;
                }
                else
                {
                    if(rucsac[j+v[i].gr].pr<rucsac[j].pr+v[i].prof)
                        rucsac[j+v[i].gr].pr=rucsac[j].pr+v[i].prof;
                }
            }
        }
    }
    for(i=1;i<=g;i++)
    {
        if(rucsac[i].pr>max)
            max=rucsac[i].pr;
    }
    fprintf(out,"%d",max);
    return 0;
}