서로 다른 x,a,b에 대해
mid(x;a,b)=[min(a,b)<x<max(a,b)]
로 정의하자. 서로 다른 네 못 a,b,c,d에 대해 현 ab와 cd의 교차 여부는
mid(c;a,b)XORmid(d;a,b)
이다.
Ei=PiPi+1를 고정하자. Ei와 Ei+2,Ei+3,⋯,ER−1의 교차 횟수의 홀짝은 중간 항의 망원 소거로
mid(Pi+2;Pi,Pi+1)XORmid(PR;Pi,Pi+1)
가 된다.
Bi=mid(Pi+2;Pi,Pi+1)로 두고 Bi의 XOR 누적 배열 S를 만든다. 또한
mid(x;a,b)=[a<x]XOR[b<x]
이므로 PR에 관한 항을 i=L,⋯,R−3에 대해 다시 XOR하면 중간 항이 모두 사라지고
mid(PR;PL,PR−2)
만 남는다.
따라서 R−L+1≤3이면 답은 0이고, 그 외에는
SR−3XORSL−1XORmid(PR;PL,PR−2)
가 답이다. 전처리는 O(N), 각 질의는 O(1)이며 전체 시간 복잡도는 O(N+Q)이다.
Solution written by GPT5