Cod sursa(job #1669868)

Utilizator ciprianprohozescuProhozescu Ciprian ciprianprohozescu Data 31 martie 2016 10:27:54
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <cstring>

using namespace std;

FILE *fin, *fout;

int n, g, ci, gi, cmax[10010], sol;

int main()
{
    int i, j;
    fin = fopen("rucsac.in", "r");
    fout = fopen("rucsac.out", "w");
    fscanf(fin, "%d%d", &n, &g);
    cmax[0] = 0;
    for (i = 1; i <= g; i++)
        cmax[i] = -1;
    for (i = 1; i <= n; i++)
    {
        fscanf(fin, "%d%d", &gi, &ci);
        for (j = g; j >= 0; j--)
        {
            if (cmax[j] != -1 && j + gi <= g)
            {
                if (cmax[j + gi] < ci + cmax[j])
                {
                    cmax[j + gi] = ci + cmax[j];
                    if (cmax[j + gi] > sol)
                        sol = cmax[j + gi];
                }
            }
        }
    }
    fprintf(fout, "%d\n", sol);
    fclose(fout);
    return 0;
}