提交记录 6221


用户 题目 状态 得分 用时 内存 语言 代码长度
negiizhao 2001. 元旦激光炮·改 Compile Error 0 0 ns 0 KB C++11 979 B
提交时间 评测时间
2018-10-03 17:14:50 2020-08-01 00:40:42
#include <algorithm>

int query_kth(const int *A, int na, const int *B, int nb, const int *C, int nc, int k)
{
	const int *value[3] = {A, B, C};
	int l[3] = {0, 0, 0}, r[3] = {na, nb, nc}, mid[3] = {na + 1 >> 1, nb + 1 >> 1, nc + 1 >> 1};
	int size(3), o[3] = {0, 1, 2}, x[3] = {value[0][na + 1 >> 1], value[1][nb + 1 >> 1], value[2][nc + 1 >> 1]};
	while (true)
	{
		if (size == 1 && k == mid[0] + mid[1] + mid[2] + 1)
			return x[*o];
		if (k <= mid[0] + mid[1] + mid[2] + 1)
		{
			std::sort(o, o + size, [&](const int i0, const int i1) { return x[i0] > x[i1]; });
			r[*o] = mid[*o] - 1, mid[*o] = l[*o] + r[*o] + 1 >> 1;
			if (l[*o] <= r[*o])
				x[*o] = value[*o][mid[*o]];
			else
				std::swap(*o, o[--size]);
		}
		else
		{
			std::sort(o, o + size, [&](const int i0, const int i1) { return x[i0] < x[i1]; });
			l[*o] = mid[*o] + 1, mid[*o] = l[*o] + r[*o] + 1 >> 1;
			if (l[*o] <= r[*o])
				x[*o] = value[*o][mid[*o]];
			else
				std::swap(*o, o[--size]);
		}
	}
}

CompilationN/AN/ACompile ErrorScore: N/A


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-10 11:40:14 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠