1 条题解
-
1
#include <iostream> #include <algorithm> using namespace std; struct Player { int s, w, id; } a[200001], win[200001], lose[200001]; bool cmd(Player x, Player y) { if (x.s != y.s) return x.s > y.s; return x.id < y.id; } int main() { int n, r, q; cin >> n >> r >> q; int original_n = n; n *= 2; for (int i = 1; i <= n; i++) { cin >> a[i].s; a[i].id = i; } for (int i = 1; i <= n; i++) cin >> a[i].w; sort(a + 1, a + n + 1, cmd); for (int i = 1; i <= r; i++) { int wcnt = 0, lcnt = 0; for (int j = 1; j <= n; j += 2) { if (a[j].w > a[j + 1].w) { a[j].s++; win[++wcnt] = a[j]; lose[++lcnt] = a[j + 1]; } else { a[j + 1].s++; win[++wcnt] = a[j + 1]; lose[++lcnt] = a[j]; } } int p = 1, q = 1, k = 1; while (p <= wcnt && q <= lcnt) { if (cmd(win[p], lose[q])) { a[k++] = win[p++]; } else { a[k++] = lose[q++]; } } while (p <= wcnt) a[k++] = win[p++]; while (q <= lcnt) a[k++] = lose[q++]; } cout << a[q].id << endl; return 0; }
信息
- ID
- 5428
- 时间
- 500ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 8
- 已通过
- 2
- 上传者