Pagini recente » Cod sursa (job #544547) | Cod sursa (job #2749898) | Cod sursa (job #1864079) | Cod sursa (job #2850235) | Cod sursa (job #2972812)
/*
#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;
}