考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC112-B - Time Limit Exceeded を解く

ABC112-B - Time Limit Exceeded

 

与えられる コスト ci と 時間 ti について

ti が T 以下のもののうち、ci が最小となる場合を求める問題

 

まずは、コストを小さい順にソートする

上から順に見ていったとき

ti が T 以下のものを見つけたらそれが答えになる

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N,T=map(int,input().split())

l=[]
for i in range(N):
  c,t=map(int,input().split())
  l.append([c,t])

# ソート(cでソートされる)
l.sort()

for x in l:
  if x[1]<=T:
    print(x[0])
    exit()

# 条件を満たす組み合わせがなかった場合
print('TLE')

 

リストの要素がリストの場合、sort 関数を使用すると

リストの第1要素が小さい順にソートしてくれる

このとき、第1要素が同じ場合は第2要素についても見てくれる

 

>>> l=[[3,5],[2,6],[1,8],[2,3]]
>>> l.sort()
>>> l
[[1, 8], [2, 3], [2, 6], [3, 5]]

 

提出結果はACでした