提出 #21895969


ソースコード 拡げる

N = int(input())
A = list(map(int, input().split())) 
for i in range(N):
    A[i]+=1

# BIT
data = [0]*(N+1)
def add(k, x):
    while k <= N:
      data[k] += x
      k += k & -k
def get(k):
    s = 0
    while k:
        s += data[k]
        k -= k & -k
    return s

ans = 0
for i, a in enumerate(A):
    # 自分より小さい要素がいくつ存在するかを計算
    ans += (N-1-i) - get(a)
    add(a, 1)
for i in range(N):
    print(ans)
    ans += N+1-A[i]*2

提出情報

提出日時
問題 F - Shift and Inversions
ユーザ H20
言語 PyPy3 (7.3.0)
得点 600
コード長 495 Byte
結果 AC
実行時間 251 ms
メモリ 101016 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 2
AC × 24
セット名 テストケース
Sample 01_sample.txt, 02_sample.txt
All 01_sample.txt, 02_sample.txt, 03_small.txt, 04_small.txt, 05_small.txt, 06_small.txt, 07_small.txt, 08_small.txt, 09_small.txt, 10_small.txt, 11_small.txt, 12_small.txt, 13_small.txt, 14_small.txt, 15_large.txt, 16_large.txt, 17_large.txt, 18_large.txt, 19_large.txt, 20_large.txt, 21_large.txt, 22_max.txt, 23_max.txt, 24_max.txt
ケース名 結果 実行時間 メモリ
01_sample.txt AC 62 ms 61976 KiB
02_sample.txt AC 52 ms 61944 KiB
03_small.txt AC 52 ms 61876 KiB
04_small.txt AC 50 ms 61832 KiB
05_small.txt AC 54 ms 61992 KiB
06_small.txt AC 53 ms 61896 KiB
07_small.txt AC 49 ms 61952 KiB
08_small.txt AC 50 ms 61900 KiB
09_small.txt AC 49 ms 61724 KiB
10_small.txt AC 56 ms 61888 KiB
11_small.txt AC 51 ms 61964 KiB
12_small.txt AC 51 ms 61728 KiB
13_small.txt AC 50 ms 61912 KiB
14_small.txt AC 50 ms 61992 KiB
15_large.txt AC 139 ms 83220 KiB
16_large.txt AC 155 ms 86052 KiB
17_large.txt AC 121 ms 80340 KiB
18_large.txt AC 135 ms 83512 KiB
19_large.txt AC 153 ms 86280 KiB
20_large.txt AC 100 ms 73104 KiB
21_large.txt AC 88 ms 69684 KiB
22_max.txt AC 251 ms 101016 KiB
23_max.txt AC 236 ms 100876 KiB
24_max.txt AC 236 ms 101000 KiB