#include <algorithm>
using namespace std;
int query_kth(const int *a, int n_a, const int *b, int n_b, const int *c, int n_c, int k)
{
int i, j, l, l_a, l_b, l_c, mid, m_a, m_b, m_c, r, r_a, r_b, r_c;
for (l = m_a = m_b = m_c = 0, r = max(a[n_a - 1], max(b[n_b - 1], c[n_c - 1])); ;)
{
mid = (l + r) / 2;
l_a = lower_bound(a + m_a, a + n_a, mid) - a; r_a = upper_bound(a + m_a, a + n_a, mid) - a;
l_b = lower_bound(b + m_b, b + n_b, mid) - b; r_b = upper_bound(b + m_b, b + n_b, mid) - b;
l_c = lower_bound(c + m_c, c + n_c, mid) - c; r_c = upper_bound(c + m_c, c + n_c, mid) - c;
i = l_a + l_b + l_c;
j = r_a + r_b + r_c;
if (i >= k)
{
r = mid - 1;
n_a = r_a;
n_b = r_b;
n_c = r_c;
}
else if (j < k)
{
l = mid + 1;
m_a = l_a;
m_b = l_b;
m_c = l_c;
}
else
return mid;
}
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |