Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

0 합계에 대한 쿼리를 확인하는 C++ 코드

<시간/>

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, i  n - 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,