結果

問題 No.1996 <><
ユーザー 👑 SPD_9X2
提出日時 2022-07-01 22:05:26
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 2,086 bytes
コンパイル時間 470 ms
コンパイル使用メモリ 82,228 KB
実行使用メモリ 115,012 KB
最終ジャッジ日時 2024-11-26 05:15:55
合計ジャッジ時間 32,862 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 21 TLE * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

"""
dp[i][j] = ij
dp[i][j-1]
A[?] < A[i] or A[?] > A[i]
K
"""
from sys import stdin
mod = 10**9+7
class RangeBIT:
def __init__(self,N,indexed): #0-indexed or 1-indexed
self.bit1 = [0] * (N+2)
self.bit2 = [0] * (N+2)
self.mode = indexed
def bitadd(self,a,w,bit): #aw(1-origin)
x = a
while x <= (len(bit)-1):
bit[x] += w
bit[x] %= mod
x += x & (-1 * x)
def bitsum(self,a,bit): #ind 1a
ret = 0
x = a
while x > 0:
ret += bit[x]
x -= x & (-1 * x)
return ret % mod
def add(self,l,r,w): #[l,r)w
l = l + (1-self.mode)
r = r + (1-self.mode)
self.bitadd(l,-1*w*l,self.bit1)
self.bitadd(r,w*r,self.bit1)
self.bitadd(l,w,self.bit2)
self.bitadd(r,-1*w,self.bit2)
def sum(self,l,r): #[l,r)
l = l + (1-self.mode)
r = r + (1-self.mode)
ret = self.bitsum(r,self.bit1) + r * self.bitsum(r,self.bit2)
ret -= self.bitsum(l,self.bit1) + l * self.bitsum(l,self.bit2)
return ret
N,K = map(int,stdin.readline().split())
A = list(map(int,stdin.readline().split()))
s = list(stdin.readline()[:-1])
adic = {}
alis = []
for i in A:
if i not in adic:
adic[i] = 0
alis.append(i)
alis.sort()
for i in range(len(alis)):
adic[alis[i]] = i
A = [ adic[i] for i in A ]
XXX = len(adic) + 2
bit = [RangeBIT(XXX,0) for i in range(K+1)]
for i in range(N):
for j in range(K,0,-1):
if s[j-1] == "<":
now = bit[j-1].sum(0,A[i])
bit[j].add(A[i],A[i]+1, now % mod )
else:
now = bit[j-1].sum(A[i]+1,XXX)
bit[j].add(A[i],A[i]+1, now % mod )
bit[0].add(A[i],A[i]+1,1)
print (bit[K].sum(0,XXX) % mod)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0