题目链接:CodeForces 600B Queries about less or equal elements
题目大意:
给定两个整数数组\(a\)和\(b\)。对于第二个数组的每个元素\(b_j\),您应该找到数组\(a\)中小于或等于值\(b_j\)的元素数。
题解:
排序后二分查找,用\(upper\_bound\)会方便很多。
#include <algorithm> #include <iostream> using namespace std; int main() { int n, m, a[200010], b[200010]; cin >> n >> m; for (int i = 1; i <= n; ++i) { cin >> a[i]; } sort(a + 1, a + 1 + n); for (int i = 1; i <= m; ++i) { cin >> b[i]; } for (int i = 1; i <= m; ++i) { int pos = upper_bound(a + 1, a + 1 + n, b[i]) - a - 1; cout << pos << ' '; } return 0; }