#include <vector>
#include <iostream>
#include <numeric>
#include <algorithm>
using namespace std;
void findPoint(vector<int>entry, vector<int>exit) {
auto maxElement = *max_element(exit.begin(), exit.end());
cout << "Max element: " << maxElement << endl;
vector<int>C(maxElement + 1); // because array start from '0'
for (int i = 0; i < entry.size(); i++) {
C[entry[i]] += 1;
C[exit[i] + 1] -= 1;
}
cout << "After sum : ";
for (auto i = 0; i < maxElement; i++) {
cout << C[i] << " ";
}
cout << endl;
partial_sum(C.begin(), C.end(), C.begin());
cout << "After partial_sum : ";
for (auto i = 0; i < maxElement; i++) {
cout << C[i] << " ";
}
cout << endl;
auto maxMoment = max_element(C.begin(), C.end());
cout << "Max at moment: " << (maxMoment - C.begin()) << endl;
cout << "Max at same time: " << *maxMoment << endl;
}
int main() {
vector<int>entry = {1, 2, 10, 5, 5};
vector<int>exit = {4, 5, 12, 9, 12};
findPoint(entry, exit);
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bnVtZXJpYz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgZmluZFBvaW50KHZlY3RvcjxpbnQ+ZW50cnksIHZlY3RvcjxpbnQ+ZXhpdCkgewogICAgYXV0byBtYXhFbGVtZW50ID0gKm1heF9lbGVtZW50KGV4aXQuYmVnaW4oKSwgZXhpdC5lbmQoKSk7CiAgICBjb3V0IDw8ICJNYXggZWxlbWVudDogIiA8PCBtYXhFbGVtZW50IDw8IGVuZGw7CiAgICB2ZWN0b3I8aW50PkMobWF4RWxlbWVudCArIDEpOyAvLyBiZWNhdXNlIGFycmF5IHN0YXJ0IGZyb20gJzAnCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGVudHJ5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgQ1tlbnRyeVtpXV0gKz0gMTsKICAgICAgICBDW2V4aXRbaV0gKyAxXSAtPSAxOwogICAgfQoKICAgIGNvdXQgPDwgIkFmdGVyIHN1bSAgICAgICAgIDogIjsKICAgIGZvciAoYXV0byBpID0gMDsgaSA8IG1heEVsZW1lbnQ7IGkrKykgewogICAgICAgIGNvdXQgPDwgQ1tpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgcGFydGlhbF9zdW0oQy5iZWdpbigpLCBDLmVuZCgpLCBDLmJlZ2luKCkpOwoKICAgIGNvdXQgPDwgIkFmdGVyIHBhcnRpYWxfc3VtIDogIjsKICAgIGZvciAoYXV0byBpID0gMDsgaSA8IG1heEVsZW1lbnQ7IGkrKykgewogICAgICAgIGNvdXQgPDwgQ1tpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgYXV0byBtYXhNb21lbnQgPSBtYXhfZWxlbWVudChDLmJlZ2luKCksIEMuZW5kKCkpOwogICAgY291dCA8PCAiTWF4IGF0IG1vbWVudDogIiA8PCAobWF4TW9tZW50IC0gQy5iZWdpbigpKSA8PCBlbmRsOwogICAgY291dCA8PCAiTWF4IGF0IHNhbWUgdGltZTogIiA8PCAqbWF4TW9tZW50IDw8IGVuZGw7Cn0KCmludCBtYWluKCkgewogICAgdmVjdG9yPGludD5lbnRyeSA9IHsxLCAyLCAxMCwgNSwgNX07CiAgICB2ZWN0b3I8aW50PmV4aXQgPSB7NCwgNSwgMTIsIDksIDEyfTsKICAgIGZpbmRQb2ludChlbnRyeSwgZXhpdCk7CiAgICByZXR1cm4gMDsKfQoK