#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Max(int a,int b){
returna>b?a:b;
}
int main(){
intn,m,t,s,i,j,k,sum;
intf[105][105],weight[105],value[105];
while(scanf("%d%d%d%d",&n,&m,&t,&s)!=EOF){
sum=-1;
for(i=1;i<=t;i++){
scanf("%d%d",&value[i],&weight[i]);
}
memset(f,0,sizeof(f));
for(i=1;i<=m;i++){
for(j=1;j<=t;j++){
for(k=1;k<=s;k++){
if(i>=weight[j]){
f[i][k]=Max(f[i][k],f[i-weight[j]][k-1]+value[j]);
}
}
}
if(f[i][s]>=n){
sum=m-i;
break;
}
}
printf("%d\n",sum);
}
return0;
}
FATE(hdu 2159)
最新推荐文章于 2021-08-03 20:39:02 发布