Cod sursa(job #2124853)

Utilizator prisacalexandruPrisac Alexandru prisacalexandru Data 7 februarie 2018 17:45:02
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<bits/stdc++.h>

using namespace std;

int n,g,a,b,c[10000][10000];

pair <int,int> r[10000];

int main(){
	ifstream cin("rucsac.in");
	ofstream cout("rucsac.out");
	cin>>n>>g;
	for(int i=1;i<=n;i++){
		cin>>a>>b;
		r[i]=make_pair(a,b);
	}
	
	sort(r+1,r+n+1);
	for(int i=1;i<=g;i++)
		c[1][i]=r[1].second;
	for(int i=2;i<=n;i++)
		for(int j=1;j<=g;j++){
			if(r[i].first>j) c[i][j]=c[i-1][j];
			else c[i][j]=max(c[i-1][j],c[i-1][j-r[i].first]+r[i].second);	
		}
	cout<<c[n][g];
	return 0;
}