Flip
시간 제한3초메모리 제한1024 MB
0과 1로 이루어진 배열에서 구간 뒤집기 연산을 처리하며, 질의 구간 안의 교대 부분 배열 개수를 센다.
문제
각 원소가 0 또는 1인 길이 의 배열이 주어진다. 인 모든 쌍 에 대해 를 배열 의 부분배열이라 한다. 배열 의 부분배열 이 교대 부분배열이라 함은 인 경우를 말한다. 즉, 부분배열의 모든 원소가 부분배열 내의 이웃한 원소와 다른 경우이다. 교대 부분배열의 정의는 부분배열 내부의 원소만 고려하므로, 은 의 교대 부분배열이다.
이 문제에서는 주어진 배열에 두 종류의 연산이 적용된다.
- 1 ℓ r: 모든 에 대해 를 로 바꾼다.
- 2 ℓ r: 이고 부분배열 가 교대 부분배열인 쌍 의 개수를 출력한다.
주어진 배열을 유지하는 프로그램을 작성하라. 프로그램은 개수를 효율적으로 출력해야 한다.
입력
첫째 줄에 두 정수 과 가 주어진다. 은 주어진 배열의 길이, 는 연산의 개수이다. 둘째 줄에 주어진 배열 을 나타내는 개의 수 이 공백으로 구분되어 주어진다. 이어서 개의 줄이 주어지며, 번째 줄에는 3개의 정수 가 주어진다. 번째 연산은 이다.
출력
두 번째 종류의 연산마다 해당 개수를 한 줄에 출력한다.
제한
- 모든 에 대해 이다.
- 모든 에 대해 이다.
- 모든 에 대해 이다.