이길 수 있는 구간
시간 제한4초메모리 제한256 MB
0부터 2^M-1까지의 순열이 주어질 때, 두 원소를 한 번 교환해 부분 배열의 XOR을 정확히 2^M-1로 만들 수 있는 부분 배열의 개수를 센다.
문제
정수 과, 을 한 번씩 담은 길이 의 배열 가 주어진다.
컴퓨터가 에서 비어 있지 않은 연속한 구간 하나를 고른다. 그 뒤 당신은 서로 다른 두 위치를 골라 그 위치에 있는 두 수를 교환해야 한다. 교환은 반드시 한 번 해야 하고, 고른 두 위치는 구간 안에 있어도 되고 밖에 있어도 되며 한쪽씩 있어도 된다. 교환을 마친 뒤 컴퓨터가 고른 구간 안의 수를 모두 비트 XOR 한 값이 정확히 이면 당신이 이긴다.
컴퓨터가 고를 수 있는 구간은 개다. 그중 당신이 이길 수 있는 구간이 몇 개인지 구하여라.
입력
첫째 줄에 정수 ()이 주어진다.
둘째 줄에 배열 를 이루는 개의 수가 공백으로 구분되어 주어진다. 이 수는 의 순열이다.
출력
당신이 이길 수 있는 구간의 개수를 한 줄에 출력한다.
힌트
첫 번째 예제에서 컴퓨터가 구간 1 2 3을 고르면 당신은 0과 3을 교환해서 이긴다. 이 예제에서는 배열 전체를 고른 경우를 빼면 어떤 구간을 골라도 이길 수 있다.
두 번째 예제에서 컴퓨터가 배열 전체 3 7 0 4 6 1 5 2를 고르면, 어떤 두 수를 교환해도 구간의 XOR 값 0은 그대로다.