結果
| 問題 | No.3015 右に寄せろ! |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-01-25 13:39:47 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 857 bytes |
| コンパイル時間 | 443 ms |
| コンパイル使用メモリ | 82,408 KB |
| 実行使用メモリ | 430,544 KB |
| 最終ジャッジ日時 | 2025-01-25 22:55:20 |
| 合計ジャッジ時間 | 33,509 ms |
|
ジャッジサーバーID (参考情報) |
judge11 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 TLE * 8 |
ソースコード
def run_length_encoding(string):
rl=[["",0]]
for i in range(len(string)):
if string[i]==rl[-1][0]:
rl[-1][1]+=1
else:
rl.append([string[i],1])
return rl[1:]
def run_length_decoding(string):
st=""
for i in string:
st=st+(i[0]*i[1])
return st
S=input()
#与えられた情報から、最終的な状態を構築する
L=run_length_encoding(S)+[["1",0],["1",0]]
for i in range(len(L)-2):
if L[i][0]=="1":
#偶数個あったら
if L[i][1]%2==0:
L[i+2][1]+=L[i][1]
L[i][1]=0
#奇数個あったら
else:
L[i+2][1]+=L[i][1]-1
L[i][1]=1
D=run_length_decoding(L)
#あとは差分を計算
def f(S):
a=0
for i in range(len(S)):
if S[i]=="1":
a+=i
return a
print((f(D)-f(S))//2)