提交记录 6765


用户 题目 状态 得分 用时 内存 语言 代码长度
negiizhao 2001. 元旦激光炮·改 Compile Error 0 0 ns 0 KB C++11 909 B
提交时间 评测时间
2018-11-05 09:04:13 2020-08-01 00:49:30
#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][mid[0]], value[1][mid[1]], value[2][mid[2]]};
	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)
		{
			if (size > 1 && x[*o] < x[o[1]])
				std::swap(*o, o[1]);
			if (size > 2 && x[*o] < x[o[2]])
				std::swap(*o, o[2]);
			r[*o] = mid[*o] - 1;
		}
		else
		{
			if (size > 1 && x[*o] > x[o[1]])
				std::swap(*o, o[1]);
			if (size > 2 && x[o[0]] > x[o[2]])
				std::swap(*o, o[2]);
			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-09 13:57:39 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠