#1202
Platinum I
수열과 쿼리 14
시간 제한
1s
메모리 제한
512MB
제출
1
정답
1
맞힌 사람
1
정답 비율
100.0%

문제

길이가 NN인 수열 A1,A2,,ANA_1, A_2, \cdots, A_N이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성해 보자.

  • 1 l r k: lirl\le i\le r인 모든 AiA_i에 대해 Ai=(Ai+k)modPA_i = (A_i + k) \mod P를 적용한다.
  • 2 l r k: lirl\le i\le r인 모든 AiA_i에 대해 Ai=(Ai×k)modPA_i = (A_i \times k) \mod P를 적용한다.
  • 3 l r k: lirl\le i\le r인 모든 AiA_i에 대해 Ai=kA_i = k를 적용한다.
  • 4 l r: (Al+Al+1++Ar)modP(A_l + A_{l+1} + \cdots + A_r) \mod P을 출력한다.

이때 P=1000000007P=1\,000\,000\,007이다.

입력

첫째 줄에 수열의 크기 NN과 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (1N,Q2000001 \le N, Q \le 200\,000)

둘째 줄에 A1,A2,,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. (0Ai1090 \le A_i \le 10^9)

셋째 줄부터 QQ개의 줄에 걸쳐 각 줄에 쿼리가 주어진다. (1lrN;0k1091\le l\le r\le N; 0\le k \le 10^9)

출력

4번 쿼리의 답을 한 줄에 하나씩 출력한다.

예제 입력 1

5 6
2 1 3 5 4
4 1 5
1 1 3 4
2 3 5 2
4 1 5
3 1 5 0
4 1 5

예제 출력

15
43
0
문제를 만든 사람
조서현
알고리즘 분류
코드 제출

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

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
#순위사용자언어시간메모리코드 길이
6118🥇
조서현
C++192ms13548KB1985B
난이도 투표
Platinum I1명 투표· 26일 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
6118
맞았습니다
C++192ms13548KB1985B2026. 05. 11. 07:52