Как посчитать количество вхождений элементов одного массива в другом?
Ребят, не могу найти ошибку в коде, выдает wrong answer
на 4 тесте
Условие:
Даны два массива. Для каждого элемента второго массива определите, сколько раз он встречается в первом массиве. Выведите m
чисел: для каждого элемента второго массива выведите, сколько раз такое значение встречается в первом массиве.
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int m;
cin >> m;
vector<int> b(m);
for (int i = 0; i < m; i++) {
cin >> b[i];
}
sort(a.begin(), a.end());
for (int i = 0; i < m; i++) {
int L = -1, R = n, mid = 0, x = b[i], first = 0, ans = 0, last = 0;
while (R - L > 1) {
mid = (R + L) / 2;
if (x <= a[mid]) {
R = mid;
} else {
L = mid;
}
}
if (a[R] == x) {
first = R;
} else {
cout << 0 << endl;
continue;
}
L = first, R = n + 1, mid = 0, ans = 0;
while (R - L > 1) {
mid = (R + L) / 2;
if (x == a[mid]) {
L = mid;
} else {
R = mid;
}
}
last = L;
ans = last - first + 1;
cout << ans << endl;
}
}