해결한 사람
0
명
정답률
0.00
%
시간 제한
3000
ms
메모리 제한
489
MB
— 나... 살아남았어.
— 집에 온 것을 환영해, Chtholly.
— 약속을 지켰어...
— 해냈어... 정말로 해냈어!
며칠간의 전투 끝에, Chtholly Nota Seniorious은 치열한 전장에서 기적적으로 돌아왔다.
약속대로 Willem은 이제 그녀를 위해 버터 케이크를 굽고 있다.
하지만 Willem은 디저트를 만드는 데 능숙함에도 버터 케이크는 좀처럼 굽지 않는다.
이번에 Willem은 큰 실수를 저질렀다. 실수로 오븐을 망가뜨린 것이다!
다행히 Chtholly가 그를 돕기로 했다.
Willem은 n개의 케이크를 한 줄로 놓는다. 케이크에는 1부터 n까지 번호가 매겨져 있으며, i-th번째 케이크는 굽는 데 ai초가 필요하다.
Willem은 케이크를 굽기 위해 Chtholly가 m개의 연산을 수행해 주어야 한다.
연산 1: 1 l r x
Willem은 Chtholly에게 구간 [l, r]의 각 케이크를 확인해 달라고 한다. 케이크를 굽는 데 x초보다 더 오래 걸려야 한다면, 그는 그 케이크를 x초 동안 굽고 제자리에 돌려놓는다. 더 정확히 말해, 구간 [l, r]의 모든 i에 대해, ai이 x보다 엄격히 크면 ai은 ai - x와 같아진다.
연산 2: 2 l r x
Willem은 Chtholly에게 구간 [l, r]에서 정확히 x초 동안 더 익혀야 하는 케이크의 수를 세어 달라고 한다. 더 형식적으로는 구간 [l, r]에서 ai = x를 만족하는 i의 수를 구해야 한다.
첫째 줄에 두 정수 n와 m (1 ≤ n, m ≤ 105)이 주어진다.
둘째 줄에 n개의 정수가 주어지며, 그중 i-th번째 정수는 ai (1 ≤ ai ≤ 105)이다.
다음 m개 줄에는 위에서 설명한 m개의 연산이 주어진다. 1 ≤ l ≤ r ≤ n이고 1 ≤ x ≤ 105임이 보장된다.
두 번째 유형의 각 연산마다 답을 출력한다.
5 6
1 5 5 5 8
2 2 5 5
1 2 4 3
2 2 5 2
2 2 5 5
1 3 5 1
2 1 5 1
3
3
0
3
8 13
75 85 88 100 105 120 122 128
1 1 8 70
2 3 8 30
1 3 8 3
2 2 5 15
1 2 4 10
2 1 5 5
1 2 7 27
2 1 5 5
1 3 7 12
1 1 7 4
2 1 8 1
1 4 8 5
2 1 8 1
1
2
3
4
5
6
7 7
1 9 2 6 8 1 7
2 1 7 1
2 2 5 2
1 4 7 7
2 2 4 2
1 3 4 5
2 3 3 3
2 3 7 2
2
1
1
0
1