30分求调,悬2关!
查看原帖
30分求调,悬2关!
726139
残阳如血楼主2023/10/28 11:10
#include <utility>
#include <iostream>
#include <algorithm>
const int MAX = 1e5 + 10;

struct node {
	int s, w, id;
};

int N, R, Q;
node a[2 * MAX], t1[MAX], t2[MAX];

bool cmp(const node &A, const node &B) {
	return A.s == B.s ? A.id < B.id : A.s > B.s;
}

int main() {
	std::cin >> N >> R >> Q;
	for (int i = 1; i <= 2 * N; ++i) std::cin >> a[i].s, a[i].id = i;
	for (int i = 1; i <= 2 * N; ++i) std::cin >> a[i].w;
	std::sort(a + 1, a + 2 * N + 1, cmp);
	for (int p, q; R; --R) {
		for (int i = 1; i <= N; ++i) {
			if (a[2 * i - 1].w > a[2 * i].w)
				t1[i] = a[2 * i - 1], t2[i] = a[2 * i];
			else
				t1[i] = a[2 * i], t2[i] = a[2 * i - 1];
			++t1[i].s;
		}
		p = q = 1, t1[N + 1].s = t2[N + 1].s = -1;
		for (int i = 1; i <= 2 * N; ++i) {
			if (t1[p].s > t2[q].s || t1[p].s == t2[q].s && t1[p].id < t2[p].id)
				a[i] = t1[p++];
			else a[i] = t2[q++];
		}
	}
	std::cout << a[Q].id;
	return 0;
}
2023/10/28 11:10
加载中...