結果
| 問題 |
No.3244 Range Multiple of 8 Query
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2025-08-25 07:33:40 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,484 bytes |
| コンパイル時間 | 359 ms |
| コンパイル使用メモリ | 82,808 KB |
| 実行使用メモリ | 121,128 KB |
| 最終ジャッジ日時 | 2025-08-25 07:33:58 |
| 合計ジャッジ時間 | 18,169 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 5 WA * 18 TLE * 1 -- * 16 |
ソースコード
import sys
input = sys.stdin.readline
from bisect import bisect
N,Q=map(int,input().split())
S=list(map(int,list(input().strip())))
L=[[] for i in range(10)]
for i in range(len(S)):
L[S[i]].append(i)
LIST=[]
for i in range(125):
s=str(8*i).zfill(3)
if "0" in s:
continue
s2=list(map(int,s))
LIST.append(s2)
for tests in range(Q):
l0,r=map(int,input().split())
ANS=1<<60
X=[[] for i in range(10)]
for j in range(10):
x=bisect(L[j],r-1)
if x-1>=0:
c=L[j][x-1]
X[j].append(c)
else:
continue
x=bisect(L[j],c-1)
if x-1>=0:
c=L[j][x-1]
X[j].append(c)
else:
continue
x=bisect(L[j],c-1)
if x-1>=0:
c=L[j][x-1]
X[j].append(c)
else:
continue
#print(X)
for l in LIST:
A=[]
if len(X[l[2]])>=1:
a=X[l[2]][0]
A.append(a)
else:
continue
if l[2]!=l[1]:
if len(X[l[1]])>=1:
a=X[l[1]][0]
A.append(a)
else:
continue
else:
if len(X[l[1]])>=2:
a=X[l[1]][1]
A.append(a)
else:
continue
if l[0]==l[1]==l[2]:
if len(X[l[0]])>=3:
a=X[l[0]][2]
A.append(a)
else:
continue
elif l[0]==l[1]:
if len(X[l[0]])>=2:
a=X[l[0]][1]
A.append(a)
else:
continue
elif l[0]==l[2]:
if len(X[l[0]])>=2:
a=X[l[0]][1]
A.append(a)
else:
continue
else:
if len(X[l[0]])>=1:
a=X[l[0]][0]
A.append(a)
else:
continue
flag=0
for a in A:
if a<l0-1:
flag=1
break
if flag:
continue
#print(l,A)
score=0
for i in range(3):
x=A[i]
score+=abs(x-(r-1-i))
for j in range(i+1,3):
if A[j]>x:
A[j]-=1
ANS=min(ANS,score)
if ANS==1<<60:
print(-1)
else:
print(ANS)
titia