Do Use Segment Tree Beats

View as PDF

Submit solution

Points: 100
Time limit: 4.0s
Memory limit: 1G

Authors:
Problem types

문제

길이가 \(N\)인 수열 \(a_1\, a_2\, \cdots \, a_N\)이 주어질 때, 다음 쿼리를 처리하는 프로그램을 작성해 보자.

  • 1 l r x: \(l \le i \le r\)인 \(a_i\)에 대해 \(a_i = a_i + x\)를 적용한다.
  • 2 l r y: \(l \le i \le r\)인 \(a_i\)에 대해 \(a_i = \max(a_i, y)\)를 적용한다.
  • 3 l r y: \(l \le i \le r\)인 \(a_i\)에 대해 \(a_i = \min(a_i, y)\)를 적용한다.
  • 4 l r: \(a_l + a_{l+1} + \cdots + a_r\)를 출력한다.

입력

첫째 줄에 수열의 크기 \(N\)과 쿼리의 개수 Q가 주어진다. \((1 \le N,Q \le 500\,000)\)

둘째 줄에는 \(a_1, a_2, \cdots ,a_N\)이 주어진다. \((-10^9 \le a_i \le 10^9)\)

셋째 줄부터 \(Q\)개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. 각 쿼리는 \(1\ l\ r\ x\) 또는 \(2\ l\ r\ y\), \(3\ l\ r\ y\), \(4\ l\ r\)이다. \((1 \le l \le r \le N, -1\,000 \le x \le 1\,000, -10^9 \le y \le 10^9)\)

4번 쿼리는 한 번 이상 주어진다.

출력

4번 쿼리의 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

5 9
10 20 30 40 50
4 1 5
1 1 3 5
2 2 4 27
3 3 5 35
4 1 5
1 1 4 -2
2 2 5 40
3 1 5 30
4 1 5

예제 출력 1

150
147
133

Comments

There are no comments at the moment.