【ABC150 C】「Count Order」を解く【Python3】

abc150c

コンテスト一覧へ

 

大きさNの順列を並び替えてできる数列P,Qが辞書順で何番目なのかを調べて、その差を答える問題です。

提出
import itertools

n = int(input())
p = tuple(map(int, input().split()))
q = tuple(map(int, input().split()))

num_list = list(itertools.permutations(range(1,n+1)))

print(abs(num_list.index(p)-num_list.index(q)))

Nが8以下であるので、最初に順列Nの全ての組み合わせを生成します。

itertoolsモジュールのpermutations()関数を使用することで、順列を生成して列挙することができます。

生成された順列をリストにし、数列Pと等しいもの、数列Qと等しいものが何番目にあるのかを調べて、差分の絶対値を求めます。

【ABC150】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。