Cod sursa(job #2195599)

Utilizator dinugaftonGafton Dinu dinugafton Data 16 aprilie 2018 20:13:49
Problema Problema rucsacului Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<bits/stdc++.h>
using namespace std;
struct rucsac
	{
		int cost,masa;
	};
int max(int a,int b)
{
	if(a>b)return(a);else return(b);
}
int main()
{
	ifstream fin("rucsac.in");
	ofstream fout("rucsac.out");
	int n,g;
	fin>>n>>g;
	rucsac a[n+1];
	for(int i=1;i<n+1;i++)
    	fin>>a[i].masa>>a[i].cost;
    int b[n+1][g+1];
    for(int i=0;i<g+1;i++)
        for(int j=0;j<g+1;j++)
        {
            b[0][j]=0;
            b[i][0]=0;
        }
    for(int i=1;i<n+1;i++)
        for(int j=1;j<g+1;j++)
        {
        	if(j-a[i].masa<0)b[i][j]=b[i-1][j];
        	if(j-a[i].masa>=0)
        	{
        		b[i][j]=max(b[i-1][j],b[i-1][j-a[i].masa]+a[i].cost);
		    }
		}
	int max1=0;
	for(int i=0;i<n+1;i++)
	    for(int j=0;j<g+1;j++)
	        if(max1<b[i][j])max1=b[i][j];
    fout<<max1;
}