Cod sursa(job #2972812)

Utilizator Bogdan345Marius Mihalache Bogdan345 Data 30 ianuarie 2023 14:40:23
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
/*
#include <iostream>
#include <vector>
using namespace std;
vector<int>dp,greutate,pret;
//imi retin in dp profitul maxim
//pentru o submultime de greutate i
//simulez pentru fiecare obiect
//in ce greutate pot sa-l pun
//Deci eu imi creez toate posibilitatile
//de avea un rucsac,iar dupa il aleg
//pe cel care are profitul cel mai mare
int main(){
    int n,g;
    cin>>n>>g;
    greutate.resize(n+1);
    pret.resize(n+1);
    dp.resize(g+1);
    for(int i=1;i<=n;i++){
        cin>>greutate[i]>>pret[i];
    }
    for(int i=1;i<=n;i++){//obiecte
        for(int j=g;j>=greutate[i];j--){//greutate/pret
            if(j-greutate[i]<0){
                continue;
            }
        dp[j]=max(dp[j],dp[j-greutate[i]]+pret[i]);
        }
    }
    int max1=-1;
    for(int i=1;i<=g;i++){
      max1=max(max1,dp[i]);
    }
    cout<<max1;

}
*/
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
vector<int>dp,greutate,pret;
int main(){
int n,g;
cin>>n>>g;
dp.resize(g+1);
greutate.resize(n+1);
pret.resize(n+1);
for(int i=1;i<=n;i++){
    cin>>greutate[i]>>pret[i];
}
for(int i=1;i<=n;i++){
    for(int j=g;j>=1;j--){
       if(j-greutate[i]<0){
        continue;
       }
    dp[j]=max(dp[j],dp[j-greutate[i]]+pret[i]);
    }
}
int max1=-1;
for(int i=1;i<=g;i++){
    max1=max(dp[i],max1);
}
cout<<max1;

}