#161
Diamond V
계단 수열과 쿼리
시간 제한
2.5s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

임의의 양의 정수 KK에 대해, 인접한 모든 수 사이의 차이가 KK인 수열을 KK-계단 수열이라고 하자. 예를 들어 [4,5,6,5,6][4, 5, 6, 5, 6]은 인접한 모든 수 사이의 차이가 1이므로 11-계단 수열이다. 다른 예로 [17,12,17,22,27][17, 12, 17, 22, 27]은 인접한 모든 수 사이의 차이가 5이므로 55-계단 수열이다. 길이가 1인 수열은 모든 KK-계단 수열에 포함된다.

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

  • 1 i j x: 현재 수열의 ii번째 원소부터 jj번째 원소까지 각각 xx를 더한다.
  • 2 i j k: ilrji \le l \le r \le j이면서, al,al+1,,ara_l, a_{l+1}, \cdots, a_rkk-계단 수열일 때, rl+1r-l+1의 최댓값을 출력한다.

입력

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

둘째 줄에 정수 a1,a2,,aN(10000ai10000)a_1, a_{2}, \cdots, a_N(-10\,000 \le a_i \le 10\,000)이 공백으로 구분되어 주어진다.

셋째 줄부터 QQ개의 줄에 쿼리가 주어진다.

각 쿼리는 네 정수로 이루어져 있으며 1 i j x(1ijN;1000x1000)1\ i\ j\ x(1 \le i \le j \le N; -1\,000 \le x \le 1\,000) 혹은 2 i j k(1ijN;1k10)2\ i\ j\ k(1 \le i \le j \le N; 1 \le k \le 10)이다.

2번 쿼리는 적어도 하나 주어진다.

출력

2번 쿼리가 주어질 때마다 쿼리를 수행한 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

5 8
6 4 6 5 3
2 1 5 1
1 1 2 1
2 1 5 2
2 2 3 2
1 3 5 1
1 4 5 -1
2 2 5 2
2 3 3 8

예제 출력 1

2
2
1
4
1
  • 2 1 5 1: [6,4,6,5,3][6,4,6,5,3]에서 가장 긴 1-계단 수열은 [6,5][6,5]이다.
  • 1 1 2 1: 쿼리 수행 결과는 [7,5,6,5,3][7,5,6,5,3]이다.
  • 2 1 5 2: [7,5,6,5,3][7,5,6,5,3]에서 가장 긴 2-계단 수열은 [7,5][7,5][5,3][5,3]이다.
  • 2 2 3 2: [5,6][5,6]에서 가장 긴 2-계단 수열은 [5][5][6][6]이다.
  • 1 3 5 1: 쿼리 수행 결과는 [7,5,7,6,4][7,5,7,6,4]이다.
  • 1 4 5 -1: 쿼리 수행 결과는 [7,5,7,5,3][7,5,7,5,3]이다.
  • 2 2 5 2: [5,7,5,3][5,7,5,3]에서 가장 긴 2-계단 수열은 [5,7,5,3][5,7,5,3]이다.
  • 2 3 3 8: [7][7]에서 가장 긴 8-계단 수열은 [7][7]이다.
문제를 만든 사람
조서현
알고리즘 분류
코드 제출

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

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Diamond V1명 투표· 약 2개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.