View Code of Problem 4041

#include <stdio.h>

long max;
int n;
//int visit[310]={0};
long time[310]={0};
long v[310]={0};


int go(int i,int c,int value)
{
	if(i==n||c==0)
	{
		if(value>max)
		{
			max=value;
		}
		return 1;
	}
	else
	{
		if(time[i]<=c)
		{
			//visit[i]=1;
			go(i+1,c-time[i],value+v[i]);
			//visit[i]=0;
		}
		go(i+1,c,value);
	}
}


int main()
{
	int m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
	{
		scanf("%ld%ld",&time[i],&v[i]);
	}
	max=v[0];
	go(0,m,0);
	printf("%ld\n",max);
 } 

Double click to view unformatted code.


Back to problem 4041