Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2024
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4. #include<algorithm>
  5.  
  6. using namespace std;
  7.  
  8. void solve()
  9. {
  10. int n, m;
  11. cin >> n >> m;
  12. vector<int> g(n + 1), close(n + 1), val(n + 1);
  13. vector<vector<int>> open(n + 1);
  14. for (int i = 0; i < m; i++)
  15. {
  16. int l, r;
  17. cin >> l >> r;
  18. --l;
  19. open[l].push_back(r);
  20. close[r]++;
  21. }
  22. int max_val = -1, cur = 0;
  23. for (int i = 0; i <= n; i++)
  24. {
  25. for (auto x : open[i])
  26. {
  27. cur++;
  28. max_val = max(max_val, x);
  29. }
  30. cur -= close[i];
  31. val[i] = cur;
  32. g[i] = max(max_val, i + 1);
  33. }
  34. vector<int> dp(n + 1, -int(1e9));
  35. dp[0] = 0;
  36. for (int i = 0; i < n; i++)
  37. {
  38. dp[i + 1] = max(dp[i + 1], dp[i]);
  39. dp[g[i]] = max(dp[g[i]], dp[i] + val[i]);
  40. }
  41. cout << dp[n] << "\n";
  42. }
  43.  
  44. int main()
  45. {
  46. ios_base::sync_with_stdio(0);
  47. cin.tie(0);
  48. int t;
  49. cin >> t;
  50. for (int i = 0; i < t; i++) solve();
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement