結果
問題 | No.1606 Stuffed Animals Keeper |
ユーザー |
|
提出日時 | 2021-07-16 22:20:23 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 247 ms / 3,000 ms |
コード長 | 1,088 bytes |
コンパイル時間 | 189 ms |
コンパイル使用メモリ | 81,896 KB |
実行使用メモリ | 79,600 KB |
最終ジャッジ日時 | 2024-07-06 09:43:21 |
合計ジャッジ時間 | 6,529 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 48 |
ソースコード
import sysinput = lambda : sys.stdin.readline().rstrip()sys.setrecursionlimit(2*10**5+10)write = lambda x: sys.stdout.write(x+"\n")debug = lambda x: sys.stderr.write(x+"\n")writef = lambda x: print("{:.12f}".format(x))def runlength(s):if not s:return []c = s[0]v = 1n = len(s)l = []for i in range(1, n):if c==s[i]:v += 1else:l.append((c,v))c = s[i]v = 1l.append((c,v))return ln = int(input())a = list(map(int, input().split()))res = runlength(a)l = []tmp = [0,0]for c,v in res:if c==2:if sum(tmp)>0:l.append(tmp)tmp = [0,0]else:tmp[c] += vif sum(tmp)>0:l.append(tmp)d = {0: 0}for a,b in l:nd = {}for k,v in d.items():nk = k+anv = vnd.setdefault(nk,10**12)nd[nk] = min(nd[nk], nv)nk = k-bnv = v+bnd.setdefault(nk,10**12)nd[nk] = min(nd[nk], nv)d = ndif 0 in d:ans = d[0]else:ans = -1print(ans)