うぉー、ついに自力で解けないB問題に遭遇。ABC 128 B
最後に残していたB問題。う、解けない…
リストinリストのソートです。
B - Guidebook /
実行時間制限: 2 sec / メモリ制限: 1024 MB
配点 : 点
問題文
あなたは美味しいレストランを紹介する本を書くことにしました。 あなたは 個のレストラン、レストラン 、レストラン 、、レストラン を紹介しようとしています。レストラン は 市にあり、あなたは 点満点中 点と評価しています。 異なる 個のレストランに同じ点数がついていることはありません。
この本では、次のような順でレストランを紹介しようとしています。
- 市名が辞書順で早いものから紹介していく。
- 同じ市に複数レストランがある場合は、点数が高いものから紹介していく。
この本で紹介される順にレストランの番号を出力してください。
制約
- は英小文字のみからなる長さ 以上 以下の文字列
- は整数
入力
入力は以下の形式で標準入力から与えられる。
出力
行出力せよ。 行目 () には、 番目に紹介されるレストランの番号を出力せよ。
入力例 1 Copy
6 khabarovsk 20 moscow 10 kazan 50 kazan 35 moscow 60 khabarovsk 40
出力例 1 Copy
3 4 6 1 5 2
種類の市名は辞書順で kazan
khabarovsk
moscow
です。 それぞれの市について、点数が高いレストランから順に紹介されていきます。よって、レストランは の順に紹介されていきます。
こちらのサイトからカンニング。
N = int(input())
L = []
for i in range(N):
S, P = input().split()
P = int(P)
L.append([S, P, i])
L = sorted(L, key=lambda x: (x[0], -x[1]))
for i in range(N):
print(L[i][2] + 1)
なるほど!sortedってそんな風につかえるのか!
まあ、最悪、2回ソートすればできるっちゃできる。