cin>>x; ll l = 1, r = 6e18; ll res = -1; while (l < r) { ll mid = l + r >> 1; ll s = check(mid); if (s < x) l = mid + 1; else r = mid; } if (check(r) == x) cout<<r; else cout<<-1; }
#include<iostream> #include<algorithm> usingnamespace std; constint N = 100010; int nums[3][N]; intmain() { int n; cin>>n;
for (int i = 0; i < 3; i++) { for (int j = 0; j < n; j++) { cin>>nums[i][j]; } sort(nums[i], nums[i] + n); }
longlong res = 0; for (int i = 0; i < n; i++) { int key = nums[1][i]; int pos1 = lower_bound(nums[0], nums[0] + n, key) - nums[0]; // 在A中找到第一个小于key的数 int pos2 = upper_bound(nums[2], nums[2] + n, key) - nums[2] + 1; // 在C中找到第一个大于key的数