Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions g0rnn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,6 @@
| 26์ฐจ์‹œ | 2025.05.26 | ๊ตฌํ˜„ | [์„œ๋ฒ„ ์ฆ์„ค ํšŸ์ˆ˜](https://school.programmers.co.kr/learn/courses/30/lessons/389479?language=java) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/106 |
| 27์ฐจ์‹œ | 2025.06.15 | Floyd-Warshall | [์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ 6๋‹จ๊ณ„ ๋ฒ•์น™](https://www.acmicpc.net/problem/1389) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/113 |
| 28์ฐจ์‹œ | 2025.06.27 | BFS | [์ƒ์–ด ์ค‘ํ•™๊ต](https://www.acmicpc.net/problem/21609) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/115 |
| 29์ฐจ์‹œ | 2025.07.22 | combination | [์†Œ๋ฌธ๋‚œ ์น ๊ณต์ฃผ](https://www.acmicpc.net/problem/1941) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/119 |
| 30์ฐจ์‹œ | 2025.07.28 | segment-tree | [์ปคํ”ผ์ˆ2](https://www.acmicpc.net/problem/1275) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/121 |
---
45 changes: 45 additions & 0 deletions g0rnn/segment-tree/30-g0rnn.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import sys
input = sys.stdin.readline

def init(node, start, end):
if start == end:
tree[node] = nums[start]
else:
mid = (start + end) // 2
init(node * 2, start, mid)
init(node * 2 + 1, mid + 1, end)
tree[node] = tree[node * 2] + tree[node * 2 + 1]

def update(node, start, end, idx, val):
if start == end:
nums[idx] = val
tree[node] = val
else:
mid = (start + end) // 2
if start <= idx <= mid:
update(node * 2, start, mid, idx, val)
else:
update(node * 2 + 1, mid + 1, end, idx, val)
tree[node] = tree[node * 2] + tree[node * 2 + 1]

def query(node, start, end, l, r):
if r < start or end < l:
return 0
if l <= start and end <= r:
return tree[node]
mid = (start + end) // 2
return query(node * 2, start, mid, l, r) + query(node * 2 + 1, mid + 1, end, l, r)

# ์ž…๋ ฅ
n, q = map(int, input().split())
nums = [0] + list(map(int, input().split())) ## int๋Š” ๊ฐ€๋ณ€ ์ •์ˆ˜๋ผ long ๋ณด๋‹ค๋„ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ.. ์•„๋‹ˆ ๊ฑ ํฌ๊ธฐ์ œํ•œ์ด ์—†์Œ
tree = [0] * (4 * n)

init(1, 1, n)
for _ in range(q):
x, y, a, b = map(int, input().split())
l = min(x, y)
r = max(x, y)

print(query(1, 1, n, l, r))
update(1, 1, n, a, b)