感觉没什么问题
int restime;
cin>>n>>m>>k>>r;
for(int i=0;i<n;i++)cin>>exam[i];
sort(exam,exam+n);
for(int i=1;i<=m;i++) cin>>w[i];
for(int i=1;i<=m;i++) cin>>v[i];
for(int j=1;j<=m;j++)
{
for(int i=1;i<=k;i++)
{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
}
int min=99999999;
for(int j=1;j<=m;j++)
{
for(int i=1;i<=k;i++)
{
if(dp[i][j]>=20&&dp[i][j]<min)
{
min=dp[i][j];
}
}
}
int tot=0;
restime=r-min;
for(int i=0;restime-exam[i]>=0;i++)
{
tot++;
restime-=exam[i];
}
cout<<tot;