fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <numeric>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. void findPoint(vector<int>entry, vector<int>exit) {
  8. auto maxElement = *max_element(exit.begin(), exit.end());
  9. cout << "Max element: " << maxElement << endl;
  10. vector<int>C(maxElement + 1); // because array start from '0'
  11. for (int i = 0; i < entry.size(); i++) {
  12. C[entry[i]] += 1;
  13. C[exit[i] + 1] -= 1;
  14. }
  15.  
  16. cout << "After sum : ";
  17. for (auto i = 0; i < maxElement; i++) {
  18. cout << C[i] << " ";
  19. }
  20. cout << endl;
  21.  
  22. partial_sum(C.begin(), C.end(), C.begin());
  23.  
  24. cout << "After partial_sum : ";
  25. for (auto i = 0; i < maxElement; i++) {
  26. cout << C[i] << " ";
  27. }
  28. cout << endl;
  29.  
  30. auto maxMoment = max_element(C.begin(), C.end());
  31. cout << "Max at moment: " << (maxMoment - C.begin()) << endl;
  32. cout << "Max at same time: " << *maxMoment << endl;
  33. }
  34.  
  35. int main() {
  36. vector<int>entry = {1, 2, 10, 5, 5};
  37. vector<int>exit = {4, 5, 12, 9, 12};
  38. findPoint(entry, exit);
  39. return 0;
  40. }
  41.  
  42.  
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
Max element: 12
After sum         : 0 1 1 0 0 1 -1 0 0 0 0 0 
After partial_sum : 0 1 2 2 2 3 2 2 2 2 2 2 
Max at moment: 5
Max at same time: 3