fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n, q;
  5. vector<pair<int, int>> dolls;
  6.  
  7. void solve() {
  8. scanf("%d %d", &n, &q);
  9. for (int i = 0; i < n; i++) {
  10. int r, h; scanf("%d %d", &r, &h);
  11. dolls.push_back({h, r});
  12. }
  13.  
  14. sort(dolls.begin(), dolls.end(), [](pair<int, int> A, pair<int, int> B) {
  15. return A.second < B.second;
  16. });
  17.  
  18. // .first = h
  19. // .second = r
  20.  
  21. vector<pair<int, int>> current;
  22. while (q--) {
  23. current.clear();
  24. int a, b; scanf("%d %d", &a, &b);
  25.  
  26. for (int i = 0; i < n; i++) {
  27. if (dolls[i].first <= b && dolls[i].second >= a)
  28. current.push_back({dolls[i].first, dolls[i].second});
  29. }
  30.  
  31. vector<int> SongNghi;
  32. int m = current.size();
  33. for (int i = 0; i < m; i++) {
  34. auto k = upper_bound(SongNghi.begin(), SongNghi.end(), current[i].first);
  35. if (k != SongNghi.begin()) {
  36. --k;
  37. *k = current[i].first;
  38. } else SongNghi.push_back(current[i].first);
  39. }
  40.  
  41. printf("%d\n", (int)SongNghi.size());
  42. }
  43. }
  44.  
  45. int main() {
  46. solve();
  47. }
  48.  
Success #stdin #stdout 0s 5316KB
stdin
7 3
9 5
3 7
10 6
5 10
2 6
10 10
4 1
10 5
3 5
3 9
stdout
0
1
2