Cod sursa(job #2505977)

Utilizator LevantajSzabo Levente Levantaj Data 7 decembrie 2019 12:32:46
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
///https://www.infoarena.ro/problema/rucsac
#include <bits/stdc++.h>
using namespace std;
void egyezes (int a[][9999], int n, int m)
{
    for (int i=0;i<=n;i++)
        for (int j=0;j<=m;j++)
    {
        if (i==0 && j==0) a[i][j]=0;
        else a[i][j]=-1;
    }
}
int main()
{
    ifstream f("rucsac.in");
    ofstream g("rucsac.out");
    int n,h;
    f>>n>>h;
    int a[9999][9999];
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=h;j++) a[i][j]=-1;
    }
    struct adat
    {
        int sz,pro;
    }d[999];
    for (int i=1;i<=n;i++)
    {
        f>>d[i].sz>>d[i].pro;
    }
    egyezes (a,n,h);
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=h;j++)
        {
            if (j>=d[i].sz && a[i-1][j-d[i].sz])
            {
                a[i][j]=max(a[i-1][j], a[i-1][j-d[i].sz]+d[i].sz);
            }
            else a[i][j]=a[i-1][j];
        }
    }
    g<<a[n][h];
    return 0;
}