Cod sursa(job #2527504)

Utilizator S_DanSochirca Dan S_Dan Data 20 ianuarie 2020 15:47:32
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include<bits/stdc++.h>
using namespace std;

int n, Gmax, g[100], c[100];
int a[100];
int folosit[100][100];

int main(){
	
	ifstream cin("rucsac.in");
	ofstream cout("rucsac.out");
	
	cin>>n>>Gmax;
	for(int i=1;i<=n;i++){
		cin>>g[i]>>c[i];
	}
	
	for(int i=1;i<=Gmax;i++) a[i]=-1;
	
	for (int i=1;i<=Gmax;i++){
		for (int j=1;j<=n;j++){
			if(g[j]<=i && a[i-g[j]]!=-1 && !folosit[j][i-g[j]])
				if(c[j]+a[i-g[j]]>a[i]){
					a[i]=c[j]+a[i-g[j]];
					for(int k=1;k<=n;k++) folosit[k][i]=folosit[k][i-g[j]];
					folosit[j][i]=1;
				} 
		}
	}
	
	cout<<a[Gmax];
}