[白俊]18870号-座標圧縮


📩 ソース


質問する


垂直線上のN個の座標X 1,X 2,...,XNがあります.この座標に座標圧縮を適用します.
Xiを座標圧縮した後、X'iの値はXi>Xjを満たす異なる座標の個数に等しくなければならない.
X1, X2, ..., XNに座標圧縮を適用すると、X"1,X"2,...,X'Nを印刷します.

入力


1行目はNです.
2行目は、スペースで区切られたX 1、X 2、…、XNをあげます.

しゅつりょく


1行目X「1,X」2,...,X'Nをスペース出力に分割します.

👉 の意見を打診


先に入力した数字を繰り返しリストに入れないために、
  • が提供される.リストに数字が表示される場合は、その数字より小さい数字の個数を記入するだけでよいが、タイムアウトを招く.
  • setが他の方法で並べ替えられる場合、各数値のインデックスは、リスト内の自分より小さい数値の個数を表す.したがって、数字とインデックスをdickshernerのキー(数字)と値(キーの数より小さい個数)に設定して出力することができます.
  • import sys
    n = int(input())
    numbers = list(map(int, sys.stdin.readline().split()))
    lst = list(set(numbers))
    lst.sort()
    result = {}
    for i in range(len(lst)):
        result[lst[i]] = i
    
    for num in numbers:
        print(result[num], end = ' ')