====== ∑|ΔEasyMAX| ====== ===== 풀이 ===== * 주어진 구간에서의 박자의 변화량의 부분합을 구하는 문제이다. 박자의 변화량의 누적합을 O(n)에 만들면, 각 쿼리를 O(1) 에 처리 가능하다. 총 시간복잡도는 O(n+q) * 근데 박자의 빠르기가 음수로 주어지는건 대체 뭔지... 별로 의미가 없긴 하지만 문제의 시나리오에도 조금 신경을...; ===== 코드 ===== """Solution code for "BOJ 17203. ∑|ΔEasyMAX|". - Problem link: https://www.acmicpc.net/problem/17203 - Solution link: http://www.teferi.net/ps/problems/boj/17203 Tags: [Prefix sum] """ import itertools import sys def main(): # pylint: disable=unused-variable N, Q = [int(x) for x in sys.stdin.readline().split()] a = [int(x) for x in sys.stdin.readline().split()] v = a[0] diff_psum = [0, v] + [v := v + abs(y - x) for x, y in itertools.pairwise(a)] for _ in range(Q): l, r = [int(x) for x in sys.stdin.readline().split()] print(diff_psum[r] - diff_psum[l]) if __name__ == '__main__': main() {{tag>BOJ ps:problems:boj:실버_4}}