結果
| 問題 |
No.3244 Range Multiple of 8 Query
|
| コンテスト | |
| ユーザー |
sasa8uyauya
|
| 提出日時 | 2025-08-23 00:21:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,086 bytes |
| コンパイル時間 | 213 ms |
| コンパイル使用メモリ | 82,744 KB |
| 実行使用メモリ | 123,488 KB |
| 最終ジャッジ日時 | 2025-08-23 00:22:10 |
| 合計ジャッジ時間 | 50,364 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 8 WA * 32 |
ソースコード
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]]
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
if max(p1,p2,p3)<=r:
ans=min(ans,a)
print(ans if ans<X else -1)
sasa8uyauya