fork download
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<queue>
  5.  
  6. using namespace std;
  7.  
  8. int instnum[110];
  9. int cost[110];
  10. int dp[110][10010];
  11. int sat[110][11] = {};
  12. int acc[110][11] = {};
  13.  
  14.  
  15. int main(){
  16. int n, m;
  17. cin >> n >> m;
  18.  
  19. for (int i = 0; i < n; i++) {
  20. cin >> cost[i] >> instnum[i];
  21. for (int j = 1; j <= instnum[i]; j++) {
  22. cin >> sat[i][j];
  23. acc[i][j] = acc[i][j - 1] + sat[i][j];
  24. }
  25. for (int j = instnum[i] + 1; j <= 10; j++)
  26. acc[i][j] = acc[i][j - 1];
  27. }
  28.  
  29. for (int i = 0; i <= m; i++) {
  30. dp[0][i] = acc[0][i / cost[0]];
  31. }
  32. for (int i = 1; i < n; i++) {
  33. for (int j = 0; j <= m; j++) {
  34. dp[i][j] = dp[i - 1][j];
  35. for (int k = 0; k <= j / cost[i]; k++) {
  36. dp[i][j] = max(
  37. dp[i][j],
  38. dp[i - 1][j - cost[i] * k] + acc[i][k]);
  39. }
  40. }
  41. }
  42.  
  43. cout << dp[n - 1][m];
  44. }
Success #stdin #stdout 0s 7412KB
stdin
3 170
1 1 1
70 1 20
50 2 9 8
stdout
37