fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long M, hari_max = 0, S[10001], E[10001], P[10001], memo[10001][10001];
  5.  
  6. long long f(int N, int H){
  7. if (memo[N][H] != 0){
  8. return memo[N][H];
  9. }
  10. if (N < 1 || H < 1){
  11. return 0;
  12. } else {
  13. if (E[N] <= H){
  14. int ambil = P[N] + f(N-1, S[N] - 1);
  15. int tidak_ambil = f(N-1, H);
  16. memo[N][H] = max(ambil, tidak_ambil);
  17. return memo[N][H];
  18. } else {
  19. memo[N][H] = f(N-1, H);
  20. return memo[N][H];
  21. }
  22. }
  23. }
  24.  
  25. int main() {
  26. memset(memo, 0, sizeof(memo));
  27. cin >> M;
  28. for (int i = 1; i <= M; i++){
  29. cin >> S[i] >> E[i] >> P[i];
  30. hari_max = max(hari_max, E[i]);
  31. }
  32.  
  33. for (int i = 1; i < M; i++){
  34. for (int j = i+1; j <= M; j++){
  35. if (E[i] > E[j]){
  36. swap(E[i], E[j]);
  37. swap(S[i], S[j]);
  38. swap(P[i], P[j]);
  39. }
  40. }
  41. }
  42.  
  43. cout << f(M, hari_max) << endl;
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0.24s 784872KB
stdin
Standard input is empty
stdout
0