結果
| 問題 | No.2581 [Cherry Anniversary 3] 28輪の桜のブーケ | 
| コンテスト | |
| ユーザー |  titia | 
| 提出日時 | 2023-12-09 02:02:05 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1,751 ms / 3,000 ms | 
| コード長 | 1,047 bytes | 
| コンパイル時間 | 636 ms | 
| コンパイル使用メモリ | 82,304 KB | 
| 実行使用メモリ | 80,472 KB | 
| 最終ジャッジ日時 | 2024-09-27 03:26:37 | 
| 合計ジャッジ時間 | 24,963 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 32 | 
ソースコード
import sys
input = sys.stdin.readline
from collections import Counter
from bisect import bisect
M=int(input())
G=list(map(int,input().split()))
H=list(map(int,input().split()))
DP1=[(0,0)]
for i in range(14):
    NDP1=[]
    for x,y in DP1:
        NDP1.append((x+1,(y+G[i])%M))
        NDP1.append((x,(y+H[i])%M))
    DP1=NDP1
DP2=[(0,0)]
for i in range(14,28):
    NDP2=[]
    for x,y in DP2:
        NDP2.append((x+1,(y+G[i])%M))
        NDP2.append((x,(y+H[i])%M))
    DP2=NDP2
LIST1=[[] for i in range(29)]
for x,y in DP1:
    LIST1[x].append(y)
for i in range(29):
    LIST1[i]=Counter(LIST1[i])
LIST2=[[] for i in range(29)]
for x,y in DP2:
    LIST2[x].append(y)
for i in range(29):
    LIST2[i].sort()
Q=int(input())
for tests in range(Q):
    K,X=map(int,input().split())
    ANS=0
    for i in range(K+1):
        for c in LIST1[i]:
            ANS+=LIST1[i][c]*(bisect(LIST2[K-i],M-c-1)-bisect(LIST2[K-i],X-c-1))
            ANS+=LIST1[i][c]*(bisect(LIST2[K-i],2*M-c-1)-bisect(LIST2[K-i],M+X-c-1))
    print(ANS)
    
            
            
            
        