結果
| 問題 |
No.742 にゃんにゃんにゃん 猫の挨拶
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-08-18 00:40:05 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 222 ms / 2,500 ms |
| コード長 | 669 bytes |
| コンパイル時間 | 217 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 12,416 KB |
| 最終ジャッジ日時 | 2024-10-11 01:21:29 |
| 合計ジャッジ時間 | 2,015 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 |
ソースコード
def inversions(a):
count = 0
n = len(a)
if n >= 2:
b = a[0:n//2].copy()
c = a[n//2:n].copy()
count += inversions(b) + inversions(c)
# b,c は sort されている。
# merge sort をしていく流れで count
ai = bi = ci = 0
while ai < n:
if bi < len(b) and (ci == len(c) or b[bi] <= c[ci]):
a[ai] = b[bi]
bi += 1
else:
count += len(b) - bi
a[ai] = c[ci]
ci += 1
ai += 1
return count
n = int(input())
a = []
for _ in range(n):
a.append(int(input()))
print(inversions(a))