#include<bits/stdc++.h>
using namespace std;
#define MAX 1000
int main()
{
int i,j,z,min;
int n,m,s,k,a[MAX],b[MAX],dp[110][MAX];
while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(dp,0,sizeof(dp));
min=65535;
for(i=1;i<=k;i++)
scanf("%d%d",&a[i],&b[i]);
for(i=1;i<=k;i++)
{
for(j=b[i];j<=m;j++)
{
for(z=1;z<=s;z++)
{
dp[z][j]=max(dp[z][j],dp[z-1][j-b[i]]+a[i]);
if(dp[z][j]>=n&&j<min)
min=j;
}
}
}
if(min==65535)
printf("-1\n");
else
printf("%d\n",m-min);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交