結果

問題 No.3116 More and more teleporter
ユーザー keigo kuwata
提出日時 2025-05-23 07:24:37
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
TLE  
実行時間 -
コード長 1,230 bytes
コンパイル時間 318 ms
コンパイル使用メモリ 12,032 KB
実行使用メモリ 26,568 KB
最終ジャッジ日時 2025-05-23 07:24:45
合計ジャッジ時間 8,008 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other TLE * 1 -- * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = sys.stdin.readline

N, Q = map(int, input().split())

# テレポーター情報を格納
# teleporters[position] = cost
teleporters = {}

for _ in range(Q):
    query = list(map(int, input().split()))
    
    if query[0] == 1:
        # クエリ1: マス1からマスxへの最小コスト
        x = query[1]
        
        # 直接歩く場合のコスト
        min_cost = x - 1
        
        # テレポーターを使う場合
        for pos, tp_cost in teleporters.items():
            # どこからでもテレポーターを使えるので、
            # マス1からテレポーター位置まで歩く必要はない
            # テレポートでマスposに移動し、そこからマスxまで歩く
            total_cost = tp_cost + abs(x - pos)
            min_cost = min(min_cost, total_cost)
        
        print(min_cost)
    
    else:
        # クエリ2: マスxにコストcのテレポーター設置
        x = query[1]
        c = query[2]
        
        # 既存のテレポーターがある場合は、より安いものに更新
        if x not in teleporters:
            teleporters[x] = c
        else:
            teleporters[x] = min(teleporters[x], c)
0