結果
| 問題 |
No.2018 X-Y-X
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-03-06 16:25:19 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 292 ms / 2,000 ms |
| コード長 | 1,031 bytes |
| コンパイル時間 | 530 ms |
| コンパイル使用メモリ | 82,400 KB |
| 実行使用メモリ | 101,064 KB |
| 最終ジャッジ日時 | 2025-03-06 16:25:27 |
| 合計ジャッジ時間 | 7,671 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 31 |
ソースコード
def mergecount(A):
cnt = 0
n = len(A)
if n>1:
A1 = A[:n>>1]
A2 = A[n>>1:]
cnt += mergecount(A1)
cnt += mergecount(A2)
i1=0
i2=0
for i in range(n):
if i2 == len(A2):
A[i] = A1[i1]
i1 += 1
elif i1 == len(A1):
A[i] = A2[i2]
i2 += 1
elif A1[i1] <= A2[i2]:
A[i] = A1[i1]
i1 += 1
else:
A[i] = A2[i2]
i2 += 1
cnt += n//2 - i1
return cnt
N=int(input())
S=input()
T=input()
if S[0]!=T[0]:
print(-1)
exit()
s=[]
t0,t1=[],[]
for i in range(N-1):
if (S[i]==S[i+1])==(i%2==1):
s.append(1)
else:
s.append(0)
if (T[i]==T[i+1])==(i%2==1):
t1.append(i)
else:
t0.append(i)
c0,c1=0,0
for i in range(N-1):
if s[i]==0:
if c0==len(t0):
print(-1)
exit()
s[i]=t0[c0]
c0+=1
else:
if c1==len(t1):
print(-1)
exit()
s[i]=t1[c1]
c1+=1
print(mergecount(s))