20分求调
查看原帖
20分求调
1260978
xycsc23楼主2024/5/29 21:00

哪位大佬帮忙看看,不知道哪里错了

#include<iostream>
#include<algorithm>
using namespace std;
#define MAX int(2*1e5+5)
struct y{
	int s, m, b;
};
bool cmp(y a, y b) {
	return a.m > b.m;
}
y w[MAX / 2], l[MAX / 2], a[MAX];
void max(y &a, y &b, int i) {
	if (a.s < b.s) {
		b.m++;
		w[i] = b;
		l[i] = a;
	}	
	else {
		a.m++;
		w[i] = a;
		l[i] = b;
	}
}
int main() {
	int n, r, q;
	cin >> n >> r >> q;
	for (int i = 0; i < 2 * n; i++)
		cin >> a[i].m;
	for (int i = 0; i < 2 * n; i++)
		cin >> a[i].s, a[i].b=i;
	sort(a, a + 2 * n, cmp);
	while (r--) {
		for (int i = 0; i < n; i++)
			max(a[i * 2], a[i * 2 + 1], i);
		int i = 0, j = 0, k = 0;
		while (i < n && j < n) {
			if (w[i].m > l[j].m)
				a[k++] = w[i++];
			else
				a[k++] = l[j++];
		}
		while (i < n)
			a[k++] = w[i++];
		while (j < n)
			a[k++] = l[j++];
	}
	cout << a[q - 1].b + 1;
	return 0;
}
2024/5/29 21:00
加载中...