물통

시간 제한1초메모리 제한1024 MB

요약
각 시작 물의 양 y에 대해 용량 x로 제한되는 N번의 채우기/빼기 작업을 수행한 뒤 남은 물의 양을 구한다.
난이도

보통10점 중 7점

유형
누적 합, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

용량이 xx인 물통과 정수로 이루어진 수열 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots,A\_N이 주어진다. 우리는 물통에 물을 채우거나 빼는 작업을 총 NN번 수행하고자 한다.

A_iA\_i가 양수라면 ii번째 작업은 물통에 물을 A_iA\_i만큼 채우는 작업이고, 아니라면 물통에 물을 ∣A_i∣\left| A\_i \right|만큼 빼는 작업이다.

  • 용량보다 많은 물을 채우려고 하면, 물은 물통의 용량까지만 차게 된다.
  • 현재 남은 물의 양보다 많은 물을 빼려고 하면, 현재 남아있는 양 만큼만 뺀다.

다음과 같은 쿼리가 총 MM번 주어진다.

  • yy: 초기에 물을 yy만큼 채우고 NN개의 작업을 순서대로 수행하고 나서, 물통에 채워져 있는 물의 양을 출력한다.

입력

첫째 줄에 용량을 나타내는 정수 xx와 수열의 길이 NN이 공백을 사이에 두고 주어진다. (1≤x≤1013,1≤N≤105)(1\leq x\leq 10^{13}, 1\leq N \leq 10^5)

둘째 줄에 정수로 이루어진 수열 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots,A\_N이 주어진다. (−x≤A_i≤x)(-x \leq A\_i \leq x)

셋째 줄에 쿼리의 개수를 나타내는 정수 MM이 주어진다. (1≤M≤105)(1\leq M \leq 10^5)

넷째 줄부터 MM개의 줄에 걸쳐 정수 yy가 주어진다. (0≤y≤x)(0 \leq y \leq x)

출력

첫째 줄부터 총 MM개의 줄에 걸쳐 쿼리가 주어질 때마다 정답을 출력한다.

예제2

  1. 예제 1

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

    입력
    1 1
    -1
    1
    1
    
    예상 출력
    0