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

C++에서 범위 합계 쿼리 후 주어진 배열에서 초기 배열 찾기

<시간/>

이 문제에서는 크기가 N인 배열 res[]가 제공됩니다. 우리의 임무는 범위 합계 쿼리 후 주어진 배열에서 초기 배열을 찾는 것입니다.

[s, e, val] 쿼리를 수행할 때 배열 rel[]을 반환할 시작 배열을 찾아야 합니다.

각 [s, e, val] 쿼리는 다음과 같이 해결됩니다.

s -> 시작 인덱스

e -> 끝 색인

val -> 배열의 s에서 e까지 각 요소에 추가할 값을 업데이트합니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

입력 :rel[] ={7, 4, 8}쿼리[][] ={{1, 2, 1},{0, 1, 3}}출력 :{4, 0, 7} 

설명 -

초기 배열 ={4, 0, 7}; 쿼리 ={1, 2, 1}; 최종 배열 ={4, 1, 8}초기 배열 ={4, 1, 8}; 쿼리 ={0, 1, 3}; 최종 배열 ={7, 4, 8}

솔루션 접근 방식

문제에 대한 간단한 해결책은 모든 쿼리를 순회하는 것입니다. 모든 쿼리는 우리가 해결하는 방식을 사용하여 문제를 해결하고 결국 찾은 배열을 반환하기 때문입니다. 여기서 initialArray를 찾으려면 반대 방식으로 작동해야 합니다. 즉, 주어진 배열에서 빼십시오.

예시

솔루션 작동을 설명하는 프로그램

#include namespace std;void calcInitialArrayQueries(int arr[], int n, int query[][3], int q) { for (int i =0; i  

출력

초기 배열:7 0 7 -1 6