#include<stdio.h>
#include<string.h>
int d[200],w[200],v[200],n,W;
int max(int a,int b)
{
return a>b?a:b;
}
void fun()
{
int i,j;
memset(v,0,sizeof(v));
for (i=0;i<n;i++)
for (j=W;j>=0;j--)
{
if (j>=w[i])
v[j]=max(v[j-w[i]]+d[i],v[j]);
}
}
int main()
{
int i;
while (~scanf("%d%d",&n,&W)) //输入物品数量以及背包的总容量
{
for (i=0;i<n;i++)
scanf("%d%d",&w[i],&d[i]); //输入每个物品的对应的容量以及价值
fun();
printf("%d\n",v[W]);
}
return 0;
}
//通过对背包容量的控制,到最后得到最大价值
#include<string.h>
int d[200],w[200],v[200],n,W;
int max(int a,int b)
{
return a>b?a:b;
}
void fun()
{
int i,j;
memset(v,0,sizeof(v));
for (i=0;i<n;i++)
for (j=W;j>=0;j--)
{
if (j>=w[i])
v[j]=max(v[j-w[i]]+d[i],v[j]);
}
}
int main()
{
int i;
while (~scanf("%d%d",&n,&W)) //输入物品数量以及背包的总容量
{
for (i=0;i<n;i++)
scanf("%d%d",&w[i],&d[i]); //输入每个物品的对应的容量以及价值
fun();
printf("%d\n",v[W]);
}
return 0;
}
//通过对背包容量的控制,到最后得到最大价值