#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int N = 35;
const int M = 1000;
int n,l;
int v[N],w[N];
int dp[M];
int max(int a, int b) {return a > b ? a : b;}
int main()
{
int i,j,k;
while(~scanf("%d%d", &n, &l))
{
for(i = 0; i < n; i++)
scanf("%d%d", v+i, w+i);
memset(dp, 0, sizeof(dp));
for(i = 0; i < n; i++)
for(j = v[i]; j <= v[i]+l; j++)
dp[j] = max(dp[j], dp[j-v[i]]+(j-v[i])*w[i]);
for(i = 0; i < v[i]+330; i++)
if(dp[i] >= l)
{
printf("%d\n", i);
break;
}
}
return 0;
}
zoj3623
最新推荐文章于 2019-03-16 15:33:29 发布