Cod sursa(job #2043001)

Utilizator KrosomAngelo Barbu Krosom Data 19 octombrie 2017 16:03:34
Problema Problema rucsacului Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
#define DIM 1001

using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int n, G;
int C[DIM][10*DIM], A[DIM][10*DIM], gr[DIM], c[DIM];

void read()
{
    f>>n>>G;
    for (int i=1; i<=n; i++)
        f>>gr[i]>>c[i];
    f.close();
}

void solve()
{
    for (int i=1; i<=n; i++)
        for (int j=1; j<=G; j++)
            if (gr[i]<=j)
                if (C[i-1][j]<C[i-1][j-gr[i]]+c[i])
                {
                    C[i][j]=C[i-1][j-gr[i]]+c[i];
                    A[i][j]=i;
                }
                else
                {
                    C[i][j]=C[i-1][j];
                    A[i][j]=A[i-1][j];
                }
            else
                {
                    C[i][j]=C[i-1][j];
                    A[i][j]=A[i-1][j];
                }
}

void write()
{
    g<<C[n][G]<<'\n';
    g.close();
}

int main()
{
    read();
    solve();
    write();
    return 0;
}