Cod sursa(job #2162669)

Utilizator andreigeorge08Sandu Ciorba andreigeorge08 Data 12 martie 2018 12:43:22
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

struct db{
    int gr, pr;
}a[5005];

long long dp[3][10005];
int n, g;

void Citire()
{
    fin >> n >> g;
    for(int i = 1; i <= n; i++)
        fin >> a[i].gr >> a[i].pr;
}

void Rez()
{
    dp[0][a[1].gr] = a[1].pr;
    int lin = 0;

    for(int i = 2; i <= n; i++)
    {
        lin = 1 - lin;

        for(int j = 1; j <= g; j++)
            if(j >= a[i].gr)
                dp[lin][j] = max(dp[1 - lin][j],
                                 dp[1 - lin][j - a[i].gr]
                                 + a[i].pr);
            else dp[lin][j] = dp[1 - lin][j];
    }

    long long maxim = -1;

    for(int i = 1; i <= g; i++)
            maxim = max(maxim, dp[lin][i]);

    fout << maxim << "\n";
}
int main()
{
    Citire();
    Rez();
    return 0;
}