만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수열과 쿼리 0

시간 제한2.5초메모리 제한512 MB

요약
1과 -1로 이루어진 수열에서 각 질의 구간 [i,j] 안에 합이 0인 가장 긴 연속 부분수열의 길이를 구하고, 없으면 0을 출력한다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 누적 합, 분할 정복, 동적 계획법
정답자
아직 제출이 없습니다

문제

11과 −1-1로만 이루어진 길이 NN의 수열 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다. 아래 쿼리를 처리하는 프로그램을 작성하시오.

  • i j: Ai,Ai+1,…,AjA_i, A_{i+1}, \dots, A_j 안에 들어 있는 연속 부분 수열 중 원소의 합이 00인 것을 찾고, 그중 가장 긴 것의 길이를 출력한다. 합이 00인 연속 부분 수열이 하나도 없으면 00을 출력한다.

입력

첫째 줄에 수열의 크기 NN (1≤N≤100 0001 \le N \le 100\,000)이 주어진다.

둘째 줄에 A1,A2,…,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. (AiA_i는 11 또는 −1-1)

셋째 줄에 쿼리의 개수 MM (1≤M≤100 0001 \le M \le 100\,000)이 주어진다.

넷째 줄부터 MM개의 줄에 쿼리가 한 줄에 하나씩 주어진다. 각 줄에는 두 정수 ii, jj (1≤i≤j≤N1 \le i \le j \le N)가 있다.

출력

쿼리마다 답을 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.

예제2

  1. 예제 1

    입력
    6
    1 1 1 -1 -1 -1
    4
    1 3
    1 4
    1 5
    1 6
    
    예상 출력
    0
    2
    4
    6
    
  2. 예제 2

    입력
    10
    1 -1 1 -1 1 -1 1 -1 1 -1
    5
    1 10
    2 9
    3 4
    5 5
    4 10
    
    예상 출력
    10
    8
    2
    0
    6