結果
問題 | No.3015 右に寄せろ! |
ユーザー |
|
提出日時 | 2025-01-25 13:44:15 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 688 ms / 2,000 ms |
コード長 | 898 bytes |
コンパイル時間 | 451 ms |
コンパイル使用メモリ | 82,760 KB |
実行使用メモリ | 285,464 KB |
最終ジャッジ日時 | 2025-01-25 22:57:40 |
合計ジャッジ時間 | 6,816 ms |
ジャッジサーバーID (参考情報) |
judge11 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 36 |
ソースコード
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: for j in range(i[1]): st.append(i[0]) return "".join(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)