본문 바로가기

카테고리 없음

[백준 24505번] blobhyperthink (Python3)

def update(i,v):
  while i<M:
    fen[i] += v; fen[i] %= mod
    i += i&-i

def cal(i):
  s = 0
  while i:
    s += fen[i]; s %= mod
    i -= i&-i
  return s

def solve():
  arr = [0]*(N+1)
  for i in range(1,M):
    for id in idx[i]:
      arr[id] = cal(id)
    for id in idx[i]:
      update(id,count[id])
  return arr

N = int(input()); M = 1<<17; mod = 10**9+7
seq = [*map(int,input().split())]
idx = [[] for i in range(M)]
for i in range(N):
  idx[seq[i]].append(i+1)
count = [0]+[1]*N
for _ in range(10):
  fen = [0]*M
  count = solve()
print(sum(count)%mod)

= [백준 13555번] 증가하는 부분 수열 (Python3) (tistory.com)