vector<int> intersection(
const vector<int> &a, vector<int> &b ) {
vector<int> res;
res.reserve(min(a.size(), b.size())); // optimize x2
size_t i = 0;
b.push_back(INT_MAX); // border, спорный момент
for (int x : a) {
while (b[i] < x) // Зачёт по чтению кода =)
i++;
if (b[i] == x)
res.push_back(x);
}
return res;
}