#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<vector<int>>& lamps, vector<int>& points) {
vector<int> all_coords;
// Collect all start, end + 1, and point coordinates
for (auto& lamp : lamps) {
all_coords.push_back(lamp[0]);
all_coords.push_back(lamp[1] + 1); // exclusive end for sweep
}
for (int p : points) {
all_coords.push_back(p);
}
// Coordinate compression
sort(all_coords.begin(), all_coords.end());
all_coords.erase(unique(all_coords.begin(), all_coords.end()), all_coords.end());
map<int, int> coord_to_index;
for (int i = 0; i < all_coords.size(); ++i) {
coord_to_index[all_coords[i]] = i;
}
// Build diff array
vector<int> diff(all_coords.size() + 2, 0);
for (auto& lamp : lamps) {
int start = coord_to_index[lamp[0]];
int end = coord_to_index[lamp[1] + 1];
diff[start] += 1;
diff[end] -= 1;
}
// Prefix sum
vector<int> prefix(diff.size(), 0);
prefix[0] = diff[0];
for (int i = 1; i < diff.size(); ++i) {
prefix[i] = prefix[i - 1] + diff[i];
}
// Answer queries
vector<int> result;
for (int p : points) {
int idx = coord_to_index[p];
result.push_back(prefix[idx]);
}
return result;
}
int main() {
vector<vector<int>> lamps = {{1, 7}, {5, 11}, {7, 9}};
vector<int> points = {7, 1, 5, 10, 9, 15};
vector<int> ans = solution(lamps, points);
for (int count : ans) {
cout << count << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBzb2x1dGlvbih2ZWN0b3I8dmVjdG9yPGludD4+JiBsYW1wcywgdmVjdG9yPGludD4mIHBvaW50cykgewogICAgdmVjdG9yPGludD4gYWxsX2Nvb3JkczsKCiAgICAvLyBDb2xsZWN0IGFsbCBzdGFydCwgZW5kICsgMSwgYW5kIHBvaW50IGNvb3JkaW5hdGVzCiAgICBmb3IgKGF1dG8mIGxhbXAgOiBsYW1wcykgewogICAgICAgIGFsbF9jb29yZHMucHVzaF9iYWNrKGxhbXBbMF0pOwogICAgICAgIGFsbF9jb29yZHMucHVzaF9iYWNrKGxhbXBbMV0gKyAxKTsgLy8gZXhjbHVzaXZlIGVuZCBmb3Igc3dlZXAKICAgIH0KICAgIGZvciAoaW50IHAgOiBwb2ludHMpIHsKICAgICAgICBhbGxfY29vcmRzLnB1c2hfYmFjayhwKTsKICAgIH0KCiAgICAvLyBDb29yZGluYXRlIGNvbXByZXNzaW9uCiAgICBzb3J0KGFsbF9jb29yZHMuYmVnaW4oKSwgYWxsX2Nvb3Jkcy5lbmQoKSk7CiAgICBhbGxfY29vcmRzLmVyYXNlKHVuaXF1ZShhbGxfY29vcmRzLmJlZ2luKCksIGFsbF9jb29yZHMuZW5kKCkpLCBhbGxfY29vcmRzLmVuZCgpKTsKCiAgICBtYXA8aW50LCBpbnQ+IGNvb3JkX3RvX2luZGV4OwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbGxfY29vcmRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgY29vcmRfdG9faW5kZXhbYWxsX2Nvb3Jkc1tpXV0gPSBpOwogICAgfQoKICAgIC8vIEJ1aWxkIGRpZmYgYXJyYXkKICAgIHZlY3RvcjxpbnQ+IGRpZmYoYWxsX2Nvb3Jkcy5zaXplKCkgKyAyLCAwKTsKICAgIGZvciAoYXV0byYgbGFtcCA6IGxhbXBzKSB7CiAgICAgICAgaW50IHN0YXJ0ID0gY29vcmRfdG9faW5kZXhbbGFtcFswXV07CiAgICAgICAgaW50IGVuZCA9IGNvb3JkX3RvX2luZGV4W2xhbXBbMV0gKyAxXTsKICAgICAgICBkaWZmW3N0YXJ0XSArPSAxOwogICAgICAgIGRpZmZbZW5kXSAtPSAxOwogICAgfQoKICAgIC8vIFByZWZpeCBzdW0KICAgIHZlY3RvcjxpbnQ+IHByZWZpeChkaWZmLnNpemUoKSwgMCk7CiAgICBwcmVmaXhbMF0gPSBkaWZmWzBdOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBkaWZmLnNpemUoKTsgKytpKSB7CiAgICAgICAgcHJlZml4W2ldID0gcHJlZml4W2kgLSAxXSArIGRpZmZbaV07CiAgICB9CgogICAgLy8gQW5zd2VyIHF1ZXJpZXMKICAgIHZlY3RvcjxpbnQ+IHJlc3VsdDsKICAgIGZvciAoaW50IHAgOiBwb2ludHMpIHsKICAgICAgICBpbnQgaWR4ID0gY29vcmRfdG9faW5kZXhbcF07CiAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhwcmVmaXhbaWR4XSk7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGxhbXBzID0ge3sxLCA3fSwgezUsIDExfSwgezcsIDl9fTsKICAgIHZlY3RvcjxpbnQ+IHBvaW50cyA9IHs3LCAxLCA1LCAxMCwgOSwgMTV9OwoKICAgIHZlY3RvcjxpbnQ+IGFucyA9IHNvbHV0aW9uKGxhbXBzLCBwb2ludHMpOwoKICAgIGZvciAoaW50IGNvdW50IDogYW5zKSB7CiAgICAgICAgY291dCA8PCBjb3VudCA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K
MTAKYWJhCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtz
10
aba
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks