Cod sursa(job #3354589)

Utilizator DraganMarius06Marius Dragan DraganMarius06 Data 19 mai 2026 11:03:41
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;
int main(){
	int n,g;
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);
	scanf("%d %d",&n,&g);
	vector<int> greutate(n+1);
	vector<int> profit(n+1);
	for(int i=1;i<=n;i++){
		scanf("%d %d",&greutate[i],&profit[i]);
	}
	// vector<vector<int>> dp(n+1,vector<int>(g+1,0));
	// int pmax=0;
	// for(int i=1;i<=n;i++){
	// 	for(int j=1;j<=g;j++){
	// 		int luam=0;
	// 		if(j-greutate[i]>=0){
	// 			luam=dp[i-1][j-greutate[i]]+profit[i];
	// 		} 
	// 		int nu_luam=dp[i-1][j];
	// 		dp[i][j]=max(luam,nu_luam);
	// 	}
	// }
	vector<int> dp1(g+1,0);
	vector<int> dp2(g+1,0);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=g;j++){
			int luam=0;
			if(j-greutate[i]>=0){
				luam=dp1[j-greutate[i]]+profit[i];
			}
			int nu_luam=dp1[j];
			dp2[j]=max(luam,nu_luam);
		}
		dp1=dp2;
	}
	int pmax=dp2[g];
	printf("%d\n",pmax);
	return 0;
}