Python の input
関数の返り値は str
型であることに注意してください。
map(int,input().split())
list(map(int,input().split()))
を使用することができます。
この問題の肝は、商品番号と代金の関係をどのように管理するか、ということです。
一つ目に、リストのインデックス番号を商品番号として、要素を代金として管理する方法が考えられますが、この問題では適していません。何故なら、商品番号は最大で であり、要素数が のリストを初期化すると、時間計算量・空間計算量共にとても大きくなってしまうからです。(簡単に言うと、処理に時間が長くかかり、必要なメモリサイズも巨大になってしまいます。)
そこで、制約の の値に注目すると、 となっており、扱っている商品の種類は高々 種類しか無いことが分かります。そこで、 dict
型の出番です。 list
型では、インデックスは から順に並べる必要があるのに対し、 dict
型では必要な分だけの key
, value
の組を管理することができます。
よって、商品番号を key
, それに対応する代金を value
として dict
で管理すればこの問題を解くことができます。また、クエリの処理に関しては、問題に書かれている通りの処理を行えば良いです。
以下は Python の実装例です。