Cod sursa(job #2471391)

Utilizator ViAlexVisan Alexandru ViAlex Data 10 octombrie 2019 20:20:07
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include<bits/stdc++.h>

#define maxn 5003
#define maxg 10003

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


int greutate[maxn], profit[maxn];
int optim[maxg];
int N,G;


void read()
{
    in>>N>>G;
    for(int i=0; i<N; i++)
        in>>greutate[i]>>profit[i];
}

int dp()
{
    for(int j=1; j<=G; j++)
        optim[j] = -1;
    int sol = 0;

    for(int i=0; i<N; i++)
    {
        for(int j=G-greutate[i]; j>=0; j--)
            if(optim[j]!=-1 && optim[j]+profit[i]>optim[j+greutate[i]])
            {
                optim[j+greutate[i]]=optim[j]+profit[i];
                sol=max(sol,optim[j+greutate[i]]);
            }
    }
    return sol;


}

int main()
{
    read();
    out<<dp()<<endl;
    return 0;
}