Cod sursa(job #2505813)

Utilizator XLuysSaratean Tudor XLuys Data 7 decembrie 2019 11:16:43
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int MAT[1001][1001];

int G,N;
struct salut
{
    int g,p;
};
salut Ruc[1000];
int main()
{
    fin>>N>>G;
    for(int i=1;i<=N;i++)
        fin>>Ruc[i].g>>Ruc[i].p;
    for(int i=1;i<=N;i++)
    {
        if(Ruc[i].p>MAT[i-1][Ruc[i].g])
            MAT[i][Ruc[i].g]=Ruc[i].p;
        for(int j=1;j<=G;j++)
            if(j>Ruc[i].g && (MAT[i-1][j] || MAT[i-1][j-Ruc[i].g]))
            MAT[i][j]=max(MAT[i-1][j],MAT[i-1][j-Ruc[i].g]+Ruc[i].p);
            else
            if(MAT[i][j]==0 && MAT[i-1][j])
            MAT[i][j]=MAT[i-1][j];
    }
    fout<<MAT[N][G];
    return 0;
}