균형 잡힌 시소 배열
시간 제한3초메모리 제한1024 MB
구간 더하기와 구간 덮어쓰기 연산이 주어질 때, 질의 구간이 균형 시소 배열인지 판별합니다.
문제
Bob은 시소를 즐겨 탄다. 시소가 좌우로 기울지 않고 균형을 이루는 상태를 특히 재미있게 생각한다. 시소를 탄 뒤 Bob은 균형 잡힌 시소 배열과 관련된 문제를 떠올린다.
길이가 인 배열을 이라고 하자. 어떤 정수 ()가 존재하여 이 성립하면, 는 균형 잡힌 시소 배열이다.
Bob은 생일 선물로 배열 을 받았다. 그는 공백이 아닌 연속 부분 배열 중에 균형 잡힌 시소 배열이 있는지 알고 싶어 한다. 구체적으로 을 만족하는 주어진 에 대해 이 균형 잡힌 시소 배열인지 묻는다. 배열의 원소는 시간에 따라 다음 두 종류의 변경을 거친다.
- 각각에 를 더한다.
- 각각을 로 바꾼다.
먼저 배열 가 주어진다. 이후 아래 세 가지 유형 중 하나의 연산이 번 주어진다.
1 l r x: 각각에 를 더한다.2 l r x: 각각을 로 바꾼다.3 l r: 이 균형 잡힌 시소 배열인지 확인한다.
입력
첫 번째 줄에 배열의 길이 과 연산의 개수 가 주어진다. 두 번째 줄에는 개의 정수 가 주어진다. 이어지는 개의 줄은 각각 위에서 설명한 연산 하나를 나타낸다.
출력
유형 3의 연산마다 해당 부분 배열이 균형 잡힌 시소 배열이면 Yes, 아니면 No를 출력한다.
제한
- 에 대해, 어떤 연산 이후에도 이라고 가정해도 된다.