pypy3求优化!60分MLE
查看原帖
pypy3求优化!60分MLE
864853
lr118楼主2023/8/13 23:01
import sys

n, r, q = map(int, sys.stdin.readline().split())
initial = list(map(int, sys.stdin.readline().split()))
score = []
for i, v in enumerate(initial):
    score.append([v, i])
score.sort(key=lambda x: (-x[0], x[1]))
power = list(map(int, sys.stdin.readline().split()))
winner = [[0, 0] for i in range(n)]
loser = [[0, 0] for i in range(n)]


def merge():
    i = j = k = 0
    while i < n and j < n:
        if winner[i][0] > loser[j][0] or winner[i][0] == loser[j][0] and winner[i][1] < loser[j][1]:
            score[k] = winner[i]
            i += 1
        else:
            score[k] = loser[j]
            j += 1
        k += 1
    while i < n:
        score[k] = winner[i]
        i += 1
        k += 1
    while j < n:
        score[k] = loser[j]
        j += 1
        k += 1


for _ in range(r):
    l = 0
    for i in range(0, len(score), 2):
        if power[score[i][1]] > power[score[i + 1][1]]:
            winner[l] = [score[i][0] + 1, score[i][1]]
            loser[l] = [score[i + 1][0], score[i + 1][1]]
        else:
            winner[l] = [score[i + 1][0] + 1, score[i + 1][1]]
            loser[l] = [score[i][0], score[i][1]]
        l += 1
    merge()
print(score[q - 1][1] + 1)

2023/8/13 23:01
加载中...