n개의 요소가 있는 배열 A가 있고 요소의 범위가 -1에서 1까지라고 가정합니다. 그리고 Q[i] =(li, ri)와 같은 m 쿼리 Q에 대한 쌍의 또 다른 배열이 있다고 가정합니다. 배열 a의 요소가 합계 Q[li] + ... + Q[ri] =0이 되도록 재배열될 수 있는 경우 쿼리에 대한 응답은 1이 되고, 그렇지 않으면 0이 됩니다. 모든 쿼리에 대한 답변을 찾아야 합니다.
따라서 입력이 A =[-1, 1, 1, 1, -1]과 같으면; Q =[[1, 1], [2, 3], [3, 5], [2, 5], [1, 5]], 출력은 [0, 1, 0, 1, 0]이 됩니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
n :=Am의 크기 :=Qz의 크기 :=0for initialize, i :=0, in - z이면 z :=n - z초기화 i :=0, i 예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include네임스페이스 std;void solve(vector A, vector > Q){ int n =A.size(); 정수 m =Q.크기(); 정수 z =0; (int a, i =0; i n - z) z =n - z; for (int i =0; i A ={ -1, 1, 1, 1, -1 }; 벡터<벡터 > Q ={ { 1, 1 }, { 2, 3 }, { 3, 5 }, { 2, 5 }, { 1, 5 } }; 해결(A, Q);} 입력
{ -1, 1, 1, 1, -1 }, { { 1, 1 }, { 2, 3 }, { 3, 5 }, { 2, 5 }, { 1, 5} }사전>출력
1, 0, 1, 0, 1,