結果
| 問題 |
No.2018 X-Y-X
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 2022-07-22 23:06:13 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 158 ms / 2,000 ms |
| コード長 | 1,371 bytes |
| コンパイル時間 | 280 ms |
| コンパイル使用メモリ | 82,424 KB |
| 実行使用メモリ | 110,584 KB |
| 最終ジャッジ日時 | 2024-07-04 07:44:51 |
| 合計ジャッジ時間 | 4,984 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 31 |
ソースコード
"""
2018:
基本的に可逆
端は不変
最初と最後に、
A?A,B?B
が或るのは必須
反転しなければ行けない箇所に色を付けよう
"""
import sys
from sys import stdin
def change(l,r,L,R):
ll = min(l,L)
rr = max(r,R)
d = r-l+1
D = R-L+1
dd = rr-ll+1
return dd*2 - d - D
def getone(lis):
ret = []
for i in range(N):
if lis[i] == 1:
if len(ret) == 0 or ret[-1][1]+1 != i:
ret.append( [i,i] )
else:
ret[-1][1] += 1
return ret
N = int(stdin.readline())
S = list(stdin.readline()[:-1])
T = list(stdin.readline()[:-1])
for i in range(N):
if S[i] == "A":
S[i] = 0
else:
S[i] = 1
for i in range(N):
if T[i] == "A":
T[i] = 0
else:
T[i] = 1
if S[0] != T[0] or S[-1] != T[-1]:
print (-1)
sys.exit()
for i in range(N):
if i % 4 in (2,3):
S[i] ^= 1
T[i] ^= 1
#S = [0,1,0,1,1,1,0,1]
#T = [0,0,1,1,0,1,0,1]
#N = len(S)
S01 = 0
T01 = 0
for i in range(N-1):
if S[i] == 0 and S[i+1] == 1:
S01 += 1
if T[i] == 0 and T[i+1] == 1:
T01 += 1
if S01 != T01:
print (-1)
sys.exit()
SG = getone(S)
TG = getone(T)
ans = 0
for i in range(len(SG)):
ans += change(SG[i][0],SG[i][1],TG[i][0],TG[i][1])
print (ans)
SPD_9X2