結果
問題 |
No.3244 Range Multiple of 8 Query
|
ユーザー |
![]() |
提出日時 | 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)