結果

問題 No.2543 Many Meetings
ユーザー LyricalMaestro
提出日時 2025-01-03 13:11:51
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,021 bytes
コンパイル時間 415 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 244,200 KB
最終ジャッジ日時 2025-01-03 13:12:30
合計ジャッジ時間 31,078 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 16 WA * 24
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

## https://yukicoder.me/problems/no/2543
import heapq
from collections import deque
MAX_INT = 10 ** 18
def main():
N, K = map(int, input().split())
lr = []
for _ in range(N):
l, r = map(int, input().split())
lr.append((l, r))
# l, r
l_map = {}
r_map = {}
for i in range(N):
l, r = lr[i]
if l not in l_map:
l_map[l] = []
l_map[l].append((r, i))
if r not in r_map:
r_map[r] = []
r_map[r].append((l, i))
#
events = set()
for i in range(N):
l, r = lr[i]
events.add(l)
events.add(r)
events = list(events)
events.sort()
#
next_nodes = [-1 for _ in range(N)]
queue = []
for x in reversed(events):
if x in l_map:
for r, i in l_map[x]:
heapq.heappush(queue, (r, -x, i))
if len(queue) > 0 and x in r_map:
for _, i in r_map[x]:
_, _, i0 = queue[0]
next_nodes[i] = i0
#
max_k = 0
while (1 << max_k) <K:
max_k += 1
max_k += 1
next_nodes_list = [[-1] * N for _ in range(max_k + 1)]
next_nodes_list[0] = next_nodes
for k in range(1, max_k + 1):
for i in range(N):
n = next_nodes_list[k - 1][i]
if n != -1:
next_nodes_list[k][i] = next_nodes_list[k - 1][n]
answer = MAX_INT
for i in range(N):
k0 = K - 1
v = i
for k in range(max_k + 1):
if k0 >= (1 << k):
if next_nodes_list[k][v] != -1:
v = next_nodes_list[k][v]
k0 -= (1 << k)
if k0 == 0:
l0, _ = lr[i]
_, r0 = lr[v]
ans = r0 - l0
answer = min(answer, ans)
if answer == MAX_INT:
print(-1)
else:
print(answer)
if __name__ == "__main__":
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0