思路
合并ab、cd,在cd中找ab的相反数,最后的upper_bound是数组中大于目标值的第一个元素的地址,low_bound是大于等于的第一个元素的地址。
tips:
1.参数一二是范围、三是目标值
2.是利用二分法查找
3.找到数据就返回它所在的地址
部分代码
for(int i = 0;i < n*n;i ++){
int temp = -ab[i];
ans += upper_bound(cd,cd + n*n, temp) - lower_bound(cd,cd + n*n,temp);
}
cout << ans << endl;