結果
問題 |
No.3244 Range Multiple of 8 Query
|
ユーザー |
![]() |
提出日時 | 2025-08-23 00:22:37 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 4,437 ms / 5,000 ms |
コード長 | 1,091 bytes |
コンパイル時間 | 179 ms |
コンパイル使用メモリ | 82,112 KB |
実行使用メモリ | 123,468 KB |
最終ジャッジ日時 | 2025-08-23 00:24:03 |
合計ジャッジ時間 | 82,417 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 40 |
ソースコード
p=[] for i in range(1000): if i%8==0: v=tuple(list(map(int,(str(i).zfill(3))[::-1]))) if 0 not in v: p+=[v] n,Q=map(int,input().split()) s=list(map(int,input()))[::-1] s+=list(range(1,10))*4 y=[[-1]*len(s) for i in range(10)] for i in range(len(s)): y[s[i]][i]=i for j in range(10): for i in reversed(range(len(s)-1)): if y[j][i]==-1: y[j][i]=y[j][i+1] X=10**8 for _ in range(Q): l,r=map(int,input().split()) l=n-l r=n-r l,r=r,l if r-l+1==1: print([-1,0][s[l]==8]) continue if r-l+1==2: p1,p2=s[l:l+2] if (p2*10+p1)%8==0: print(0) elif (p1*10+p2)%8==0: print(1) else: print(-1) continue ans=X for v in p: p1,p2,p3=v z=[] ll=l z+=[y[p1][ll]] ll=l if p2==p1: ll=z[0]+1 z+=[y[p2][ll]] ll=l if p3==p1: ll=z[0]+1 if p3==p2: ll=z[1]+1 z+=[y[p3][ll]] if max(z)>r: continue p1,p2,p3=z p1-=l p2-=l p3-=l a=(p1-0)+(p2-1)+(p3-2) a+=p2<p1 a+=p3<p1 a+=p3<p2 ans=min(ans,a) print(ans if ans<X else -1)