fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int n, t;
  6. int a[3100], b[3100];
  7. int dp[3100][3100][2];
  8.  
  9. int main(){
  10. cin >> n >> t;
  11. for(int i = 0; i < n; i++) cin >> a[i] >> b[i];
  12. for(int j = 0; j < n; j++){
  13. for(int i = t - 1; i >= 0; i--){
  14. if(i + a[j] < t){
  15. for(int k = 0; k < 2; k++){
  16. dp[i + a[j]][j + 1][k] = max(dp[i + a[j]][j + 1][k], dp[i][j][k] + b[j]);
  17. }
  18. }
  19. for(int k = 0; k < 2; k++){
  20. dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k]);
  21. dp[i][j + 1][k] = max(dp[i][j + 1][k], dp[i][j][k]);
  22. }
  23. dp[i][j + 1][1] = max(dp[i][j + 1][1], dp[i][j][0] + b[j]);
  24. dp[i][j][1] = max(dp[i][j][1], dp[i][j][0]);
  25. }
  26. }
  27. cout << dp[t - 1][n - 1][1] << '\n';
  28. }
Success #stdin #stdout 0s 4500KB
stdin
3 60
10 10
10 20
10 30
stdout
30