[백준 11505번] 구간 곱 구하기 (Python3)
import sys input = sys.stdin.readline mod = 1000000007 N,M,K = map(int,input().split()) data = [0]*(N+1) for i in range(N): data[i] = int(input()) segtree = {} def makeseg(start,end,x): if start == end: segtree[x] = data[start] else: mid = (start+end)//2 segtree[x] = makeseg(start,mid,x*2) * makeseg(mid+1,end,x*2+1) %mod return segtree[x] makeseg(0,N-1,1) def editseg(n,c,start,end,x): if start =..
[백준 2357번] 최솟값과 최댓값 (Python3)
import sys input = sys.stdin.readline N,M = map(int,input().split()) data = [0]*N for i in range(N): data[i] = int(input()) maxsegtree = {} minsegtree = {} def makemaxseg(start,end,x): if start == end: maxsegtree[x] = data[start] return maxsegtree[x] else: mid = (start+end)//2 maxsegtree[x] = max(makemaxseg(start,mid,x*2),makemaxseg(mid+1,end,x*2+1)) return maxsegtree[x] def makeminseg(start,end..
[백준 2042번] 구간 합 구하기 (Python3)
import sys input = sys.stdin.readline N,M,K = map(int,input().split()) data = [0]*(N+1) for i in range(N): data[i] = int(input()) segtree = {} def makeseg(start,end,x): if start == end: segtree[x] = data[start] else: mid = (start+end)//2 segtree[x] = makeseg(start,mid,x*2) + makeseg(mid+1,end,x*2+1) return segtree[x] makeseg(0,N-1,1) def editseg(n,dif,start,end,x): segtree[x] += dif if start == ..