为何RE???
查看原帖
为何RE???
1339889
pjh0625楼主2025/1/9 16:05
class Node:
    def __init__(self, a, t):
        self.a = a
        self.t = t
        self.s = a + t

n, m = map(int, input().split())
a = []
b = []

for i in range(n):
    a.append(Node(int(input()), 0))

for i in range(n):
    a[i].t = int(input())
    b.append(Node(a[i].a, a[i].t))

for i in range(n):
    a[i].s = a[i].t + a[i].a

a.sort(key=lambda x: x.s)
b.sort(key=lambda x: x.a)

t = a[0].s
num = 0
k = 0

for i in range(n):
    if b[i].a < t:
        if i == 0 or b[i].a != b[i - 1].a:
            if num == m:
                print(b[i - 1].a)
                exit(0)
            elif num > m:
                print("-1")
                exit(0)
        num += 1
    else:
        if num == m:
            print(b[i - 1].a)
            exit(0)
        elif num > m:
            print("-1")
            exit(0)
        k = i
        break

if b[n - 1].a < t:
    if num == m:
        print(b[n - 1].a)
        exit(0)
    elif num > m:
        print("-1")
        exit(0)

for i in range(k, n):
    if b[i].a == t:
        num += 1
    else:
        k = i
        break

sum_ = 0
j = 0

for i in range(n):
    if a[i].s == t:
        sum_ += 2
    else:
        j = i
        break

num -= sum_ // 2

if sum_ + num == m:
    print(t)
    exit(0)
if sum_ + num > m:
    print("-1")
    exit(0)

while True:
    t += 1
    sum_ *= 2
    if t == a[j].s:
        for j in range(j, n):
            if a[j].s == t:
                sum_ += 2
                num -= 1
            else:
                break
    if t == b[k].a:
        for k in range(k, n):
            if b[k].a == t:
                num += 1
            else:
                break
    if sum_ + num == m:
        print(t)
        exit(0)
    if sum_ + num > m:
        print("-1")
        exit(0)

2025/1/9 16:05
加载中...