这不是01背包吗?
#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[1000010],b[100010],dp[100010];
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
for(int i=1;i<=n;i++){
for(int j=m;j>=a[i];j--) dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
}
if(dp[m]>=k) printf("yes\n");
else printf("no\n");
printf("%d",dp[m]);
return 0;
}