https://www.acmicpc.net/problem/17390
import sys
input = sys.stdin.readline
n, q = map(int, input().split())
arr = [0]+list(map(int, input().split()))
arr.sort()
dp = []
for i in arr:
if not dp:
dp.append(i)
else:
dp.append(dp[-1] + i)
# print(dp)
answer = []
for _ in range(q):
l, r = map(int, input().split())
right = dp[r]
left = dp[l-1]
# print(right, left)
# break
print(right - left)
# print(answer)
우선 dp라는 배열에 누적합을 계산해준다.
누적합에서 r번째의 숫자와 l-1 번째를 빼준다면 arr[L:R]의 숫자를 확인할 수 있다.
'알고리즘' 카테고리의 다른 글
BOJ) 평범한 배낭 (0) | 2024.03.03 |
---|---|
파이선) 어두운 건 무서워 - BOJ (2D Array prefix sum, and 블로그의 방향성) (0) | 2024.01.09 |
파이썬) 두 배열의 합 - BOJ (0) | 2023.12.27 |
파이썬) 좋다 - BOJ (0) | 2023.12.21 |
자바스크립트,react) video스트림 켜기(끈 상태) (0) | 2023.12.13 |