Cod sursa(job #2071599)

Utilizator dey44andIoja Andrei-Iosif dey44and Data 20 noiembrie 2017 20:06:57
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("energii.in");
ofstream out("energii.out");

int n, GMax;
int c[1001], g[1001];
int CMax[1001], Uz[1001][1001];

void Citire()
{
    in >> n >> GMax;
    for(int i=1; i<=n; i++)
        in >> g[i] >> c[i];
    for(int i=1; i<=GMax; i++) CMax[i]=-1;
}

void Rezolvare()
{
    for(int S=1; S<=GMax; S++)
        for(int i=1; i<=n; i++)
            if(g[i]<=S && CMax[S-g[i]]!=-1 && !Uz[S-g[i]][i])
                if(CMax[S]<c[i]+CMax[S-g[i]])
                {
                    CMax[S]=c[i]+CMax[S-g[i]];
                    for(int k=1; k<=n; k++)
                        Uz[S][k]=Uz[S-g[i]][k];
                    Uz[S][i]=1;
                }
}

int main()
{
    Citire();
    Rezolvare();
    out << CMax[GMax];
    return 0;
}