我有一项任务是查找多个数字(n)是否在多个区间(m)中,并且我指向lower_bound和upper_bound以比O(nm)更快地进行检查 ,像O((n + m)* log(n))。
#include <bits/stdc++.h>
using namespace std;
int main()
{
cin.tie(0);
ios_base::sync_with_stdio(0);
cout.tie(0);
int n, m, temp, temp1;
vector <pair<int, int>> uogienes;
vector <int> erskeciai;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> temp;
erskeciai.push_back(temp);
}
temp = 0;
for (int i = 0; i < m; i++) {
cin >> temp >> temp1;
uogienes.push_back(make_pair(temp, temp1));
}
for (int i = 0; i < m; i++) {
temp = 0;
for (int h = 0; h < n; h++) {
if (uogienes[i].first <= erskeciai[h] && uogienes[i].second >= erskeciai[h]) {
temp++;
}
}
cout << temp << "\n";
}
return 0;
}
现在我不知道如何进一步推进lower_bound或upper_bound,因为它们对我来说都是新手,迭代器等也是如此。任何人都可以帮我完成这项任务吗?