結果
| 問題 | No.742 にゃんにゃんにゃん 猫の挨拶 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-08-18 00:40:05 |
| 言語 | Python3 (3.14.7 + numpy 2.5.2 + scipy 1.18.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 120 ms / 2,500 ms |
| + 579µs | |
| コード長 | 669 bytes |
| 記録 | |
| コンパイル時間 | 55 ms |
| コンパイル使用メモリ | 14,976 KB |
| 実行使用メモリ | 12,672 KB |
| 最終ジャッジ日時 | 2026-09-13 15:31:29 |
| 合計ジャッジ時間 | 1,953 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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))