結果
問題 | No.295 hel__world |
ユーザー |
![]() |
提出日時 | 2021-01-02 11:45:02 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,893 ms / 5,000 ms |
コード長 | 1,183 bytes |
コンパイル時間 | 483 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 151,856 KB |
最終ジャッジ日時 | 2024-10-12 01:35:11 |
合計ジャッジ時間 | 12,145 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 53 |
ソースコード
from itertools import groupby*a, = map(int,input().split())d = {}t = input()+"Z"for k,v in groupby(t):v = "".join(v)if k in d: d[k].append(len(v))else: d[k] = [len(v)]V = [0]*26from heapq import *for i,ai in enumerate(a):s = chr(i+97)if s not in d: continuev = ai - sum(d[s])V[i] = vif v < 0:print(0)exit()def hel(ans):if ans >= MAX:print("hel")exit()ans = 1MAX = 1<<62for i,ai in enumerate(a):s = chr(i+97)if s not in d: continuev = V[i]if v==0: continueq = [(-(i+1.0),i,i) for i in d[s]] # 倍率、先頭、長さif len(q) == 1:for i in range(q[0][-1]):ans *= ai-q[0][-1]+i+1ans //= i+1hel(ans)continueif len(q) == 2 == sum(d[s]):x = ai//2for aa in [x,ai-x]:ans *= aahel(ans)continueif (v//len(q)) > (MAX+10)**(1/len(q)) or (v > 64 and len(q) > 64):hel(MAX)heapify(q)for _ in range(v):__,x,y = heappop(q)ans = ans*(y+1)//(y-x+1)heappush(q,(-(y+2)/(y+2-x),x,y+1))hel(ans)print(ans)