#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int a[maxn],b[maxn],dp[maxn],num[maxn];
int main()
{
int n,m,k,s;
while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF){
memset(dp,0,sizeof(dp));
memset(num,0,sizeof(num));
for(int i=0;i<k;i++){
scanf("%d%d",&a[i],&b[i]);
}
for(int i=0;i<k;i++) {
for(int j=0;j<=m;j++) {
if(j>=b[i])
if(dp[j]<dp[j-b[i]]+a[i]&&num[j-b[i]]<s) {
dp[j]=dp[j-b[i]]+a[i];
num[j]=num[j-b[i]]+1;
}
}
}
for(int j=0;j<=m;j++){
if(dp[j]>=n){
cout<<m-j<<endl;
break;
}
if(j==m) cout<<"-1"<<endl;
}
}
return 0;
}
hdu2159
最新推荐文章于 2021-07-19 11:01:57 发布