結果
| 問題 |
No.1150 シュークリームゲーム(Easy)
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-09 20:56:15 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,865 bytes |
| コンパイル時間 | 249 ms |
| コンパイル使用メモリ | 82,044 KB |
| 実行使用メモリ | 92,268 KB |
| 最終ジャッジ日時 | 2025-04-09 20:58:10 |
| 合計ジャッジ時間 | 5,575 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 16 WA * 27 |
ソースコード
import heapq
def main():
n = int(input())
s, t = map(int, input().split())
a = list(map(int, input().split()))
used = [False] * (n + 1) # 1-based indexing
# Mark initial positions as used
used[s] = True
used[t] = True
x = a[s-1]
y = a[t-1]
heap315 = []
heap8128 = []
def get_neighbors(u):
if u == 1:
return [2, n]
elif u == n:
return [1, n-1]
else:
return [u-1, u+1]
# Initialize heaps for both players
for neighbor in get_neighbors(s):
if not used[neighbor]:
heapq.heappush(heap315, (-a[neighbor-1], neighbor))
for neighbor in get_neighbors(t):
if not used[neighbor]:
heapq.heappush(heap8128, (-a[neighbor-1], neighbor))
turn = 0 # 0 for 315's turn, 1 for 8128's turn
while heap315 or heap8128:
if turn == 0:
# 315's turn
while heap315:
current_a, u = heapq.heappop(heap315)
current_a = -current_a
if not used[u]:
x += current_a
used[u] = True
for v in get_neighbors(u):
if not used[v]:
heapq.heappush(heap315, (-a[v-1], v))
break
turn = 1
else:
# 8128's turn
while heap8128:
current_a, u = heapq.heappop(heap8128)
current_a = -current_a
if not used[u]:
y += current_a
used[u] = True
for v in get_neighbors(u):
if not used[v]:
heapq.heappush(heap8128, (-a[v-1], v))
break
turn = 0
print(x - y)
if __name__ == "__main__":
main()
lam6er