結果
問題 | No.1654 Binary Compression |
ユーザー |
|
提出日時 | 2021-08-20 23:01:20 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,198 bytes |
コンパイル時間 | 371 ms |
コンパイル使用メモリ | 81,980 KB |
実行使用メモリ | 835,720 KB |
最終ジャッジ日時 | 2024-10-14 06:15:50 |
合計ジャッジ時間 | 40,117 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 TLE * 4 MLE * 4 |
ソースコード
from itertools import groupbys=input()n=len(s)s=[s[i] for i in range(n)]mod=924844033data=groupby(s)data=[(key,len(list(group))) for key,group in data]Start=1End=1if data[0][0]=="0":Start+=data[0][1]data=data[1:]if not data:print(Start-1)exit()if data[-1][0]=="0":End+=data[-1][1]data.pop()comp=[0]*len(data)for i in range(len(data)):comp[i]=data[i][1]n=len(comp)if n==1:print(comp[0]*Start*End)exit()odd=[(comp[i],i//2) for i in range(n) if i%2==1]#print(odd)N=len(odd)ID=[-1]*nstack=[]for i in range(N):while stack and stack[-1][0]<odd[i][0]:stack.pop()if stack:ID[2*i+1]=stack[-1][1]stack.append(odd[i])#print(ID[1::2])dp=[0]*ndp[0]=comp[0]pre=[0]*nfor i in range(2,n,2):id=ID[i-1]if id==-1:res=comp[i-1]*dp[i-2]pre[i-1]=res#prel[i-1]=1else:j=2*id+1#res=(comp[i-1]*dp[i-2]+(comp[j]-comp[i-1])*premono[j])%modres=(comp[i-1]*dp[i-2]+pre[j]-comp[i-1]*dp[j-1])%modpre[i-1]=res#prel[i-1]=prel[j]+1dp[i]=(comp[i]*res+dp[i-2]+comp[i])%mod#print(pre)#print(dp)print((dp[-1]*Start*End)%mod)