Cod sursa(job #2806179)

Utilizator Username01Name Surname Username01 Data 22 noiembrie 2021 13:57:07
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>

using namespace std;
FILE* f, * g;

struct bla
{
    int gr, pr;
}v[5002];
int cost[4][10002];

int main()
{
    f = fopen("rucsac.in", "r");
    g = fopen("rucsac.out", "w");
    int n, G;
    fscanf(f, "%d %d", &n, &G);
    for (int i = 1;i <= n;++i)
        fscanf(f, "%d %d", &v[i].gr, &v[i].pr);
    int lc = 1, lp = 0;
    for (int i = 1;i <= n;++i)
    {
        for (int j = 1;j <= G;++j)
            if (v[i].gr <= j)
            {
                if (cost[lp][j] > cost[lp][j - v[i].gr] + v[i].pr)
                    cost[lc][j] = cost[lp][j];
                else
                    cost[lc][j] = cost[lp][j - v[i].gr] + v[i].pr;
            }
            else
                cost[lc][j] = cost[lp][j];
        lc ^= 1;
        lp ^= 1;
    }
    fprintf(g, "%d", cost[lp][G]);
    fclose(f);
    fclose(g);
    return 0;
}