fork(1) download
  1. #include<bits/stdc++.h>
  2. #define F first
  3. #define S second
  4. using namespace std;
  5. int dp[101][10001],zm;
  6. pair<int,int>t[101];
  7. vector<int>wyn;
  8.  
  9. int main(){
  10. ios_base::sync_with_stdio(0);
  11. cin.tie(0);
  12. cout.tie(0);
  13. int n,B;
  14. cin>>n>>B;
  15. for(int i=1;i<=n;i++) cin>>t[i].F;
  16. for(int i=1;i<=n;i++) cin>>t[i].S;
  17. //sort(t[i],t[i]+n)
  18. for(int i=1;i<=n;i++){
  19. for(int j=1;j<=B;j++){
  20. if(j-t[i].F>=0) dp[i][j]=max(dp[i-1][j],dp[i-1][j-t[i].F]+t[i].S);
  21. else dp[i][j]=dp[i-1][j];
  22. }
  23. }
  24. cout<<dp[n][B]<<"\n";
  25. int l=B;
  26. for(int k=n;k>0;k--){
  27. if(dp[k][l]!=dp[k-1][l]){
  28. zm++;
  29. wyn.push_back(k);
  30. l--;
  31. }
  32. }
  33. cout<<zm<<"\n";
  34. for(int i:wyn) cout<<i<<' ';
  35. }
Success #stdin #stdout 0.01s 5280KB
stdin
4 8
4 2 2 2
1 2 2 2
stdout
6
4
4 3 2 1