Neterukun's Library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub Neterukun1993/Library

:heavy_check_mark: 転倒数
(DataStructure/BinaryIndexedTree/inversion_number.py)

使い方

inversion_number(array: Sequence[int]) -> int
array の転倒数を返す。計算量 $O(n\log n)$

Depends on

Verified with

Code

from DataStructure.BinaryIndexedTree.PointAddRangeSum import BinaryIndexedTree


def inversion_number(array):
    comp = {val: i for i, val in enumerate(sorted(set(array)))}
    for i, val in enumerate(array):
        array[i] = comp[val]
    max_val = max(array)
    bit = BinaryIndexedTree(max_val + 1)
    inv_num = 0
    for i in array:
        bit.add(i, 1)
        inv_num += bit.sum(i + 1, max_val + 1)
    return inv_num
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/python.py", line 96, in bundle
    raise NotImplementedError
NotImplementedError
Back to top page