結果

問題 No.678 2Dシューティングゲームの必殺ビーム
ユーザー lam6er
提出日時 2025-03-26 15:56:16
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 50 ms / 2,000 ms
コード長 1,242 bytes
コンパイル時間 366 ms
コンパイル使用メモリ 82,036 KB
実行使用メモリ 61,100 KB
最終ジャッジ日時 2025-03-26 15:56:48
合計ジャッジ時間 1,895 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 18
権限があれば一括ダウンロードができます

ソースコード

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

n, xLB, xRB = map(int, input().split())
enemies = []
for _ in range(n):
XL, YU, XR, YD = map(int, input().split())
enemies.append((XL, YU, XR, YD))
# Initialize blocking_yd for each x in the beam's range
beam_length = xRB - xLB + 1
blocking_yd = [-1] * beam_length # -1 indicates no enemy has covered this x yet
for enemy in enemies:
XL, YU, XR, YD = enemy
# Calculate overlap with beam's x range
overlap_start = max(xLB, XL)
overlap_end = min(xRB, XR)
if overlap_start > overlap_end:
continue # no overlap
# Update blocking_yd for each x in the overlap
for x in range(overlap_start, overlap_end + 1):
idx = x - xLB
if YD > blocking_yd[idx]:
blocking_yd[idx] = YD
# Determine hit status for each enemy
results = []
for enemy in enemies:
XL, YU, XR, YD = enemy
overlap_start = max(xLB, XL)
overlap_end = min(xRB, XR)
if overlap_start > overlap_end:
results.append(0)
continue
hit = False
for x in range(overlap_start, overlap_end + 1):
idx = x - xLB
if blocking_yd[idx] == YD:
hit = True
break
results.append(1 if hit else 0)
# Output the results
for res in results:
print(res)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0