#102
Ruby V
Do Use Segment Tree Beats
시간 제한
4s
메모리 제한
1024MB
제출
38
정답
1
맞힌 사람
1
정답 비율
2.6%

문제

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

  • 1 l r x: lirl ≤ i ≤ raia_i에 대해 ai=ai+xa_i = a_i + x를 적용한다.
  • 2 l r y: lirl ≤ i ≤ raia_i에 대해 ai=max(ai,y)a_i = \max(a_i, y)를 적용한다.
  • 3 l r y: lirl ≤ i ≤ raia_i에 대해 ai=min(ai,y)a_i = \min(a_i, y)를 적용한다.
  • 4 l r: al+al+1++ara_l + a_{l+1} + \cdots + a_r를 출력한다.

입력

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

둘째 줄에는 a1,a2,,aNa_1, a_2, \cdots ,a_N이 주어진다. (109ai109)(-10^9 ≤ a_i ≤ 10^9)

셋째 줄부터 QQ개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. 각 쿼리는 1 l r x1\ l\ r\ x 또는 2 l r y2\ l\ r\ y, 3 l r y3\ l\ r\ y, 4 l r4\ l\ r이다. (1l rN,1000x1000,109 y109)(1 ≤ l ≤ r ≤ N, -1\,000 ≤ x ≤ 1\,000, -10^9 ≤ y ≤ 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
문제를 만든 사람
조서현
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
#순위사용자언어시간메모리코드 길이
5488🥇
조서현
C++718ms120144KB6154B
난이도 투표
Ruby V1명 투표· 약 2개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
5488
맞았습니다
C++718ms120144KB6154B2026. 04. 18. 04:12
5487
틀렸습니다
C++--6164B2026. 04. 18. 04:06