結果

問題 No.929 よくあるボールを移動するやつ
ユーザー FromBooskaFromBooska
提出日時 2023-03-15 20:49:39
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 71 ms / 2,000 ms
コード長 1,350 bytes
コンパイル時間 327 ms
コンパイル使用メモリ 81,908 KB
実行使用メモリ 86,320 KB
最終ジャッジ日時 2024-09-18 08:52:37
合計ジャッジ時間 2,035 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

# 00140
#
# BA
# ABC004D
# BiAjAkdef
def move_to_A(i, j, k):
if j <= i and k <= i:
dist1 = abs(i-j)
dist2 = abs(i-k)
if dist1 == 0 and dist2 == 0:
move = 0
elif dist2 == 0:
move = dist1*(dist1+1)//2
else:
move = dist1*(dist1+1)//2 - (dist2-1)*dist2//2
elif i <= j and i <= k:
dist1 = abs(k-i)
dist2 = abs(j-i)
if dist1 == 0 and dist2 == 0:
move = 0
elif dist2 == 0:
move = dist1*(dist1+1)//2
else:
move = dist1*(dist1+1)//2 - (dist2-1)*dist2//2
else:
# j < i and i < k
dist1 = abs(i-j)
dist2 = abs(k-i)
move = dist1*(dist1+1)//2 + dist2*(dist2+1)//2
return move
# test
# move_to_A(3, 2, 4)
N = int(input())
B = list(map(int, input().split()))
left = 0
right = 0
ans = 0
for i in range(N):
if B[i] > 0:
right = left + B[i] - 1
calc = move_to_A(i, left, right)
ans += calc
left = right +1
right = left
#print(i, B[i], 'calc', calc, 'ans', ans, left, right)
print(ans)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0