만드는 중입니다

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

대기 시간 예측

면접 대비

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

요약
시간 순서대로 주어지는 유니사이클 반납과 대여 요청 기록이 있을 때, 시작 시 보유 대수를 여러 값으로 바꿔 가며 모든 요청자의 총 대기 시간을 구하고, 끝까지 기다리는 사람이 있으면 무한대를 출력한다.
난이도

보통10점 중 7점

유형
누적 합, 이분 탐색, 배열, 구현
정답자
아직 제출이 없습니다

문제

애덤 이스트 시장은 하셸 시의 대중교통망을 개선하려고 외발자전거를 빌려주는 대여소를 세운다. 전용 카드를 가진 사람은 누구나 대여소에 와서 외발자전거를 요청하거나 반납할 수 있다.

요청 절차는 간단하다. 요청하는 사람은 대기열에 들어간다. 남아 있는 외발자전거가 있으면 대기열 맨 앞 사람이 즉시 한 대를 가져간다. 남아 있는 외발자전거가 없으면 대기열에 선 사람들은 누군가 그 대여소에 외발자전거를 반납할 때까지 기다린다.

한 사람의 대기 시간은 요청한 순간, 즉 대기열에 들어간 순간부터 외발자전거를 받은 순간까지 걸린 시간이다. 끝내 외발자전거를 받지 못한 사람의 대기 시간은 무한이다. 총 대기 시간은 모든 사람의 대기 시간을 더한 값이다.

애덤은 하루치 일정을 이미 전부 알고 있다. 중앙 대여소에서 사람들이 몇 시에 외발자전거를 요청하고 몇 시에 반납하는지 안다. 중앙 대여소는 외발자전거를 몇 대든 동시에 보관한다. 모르는 것은 하루를 시작할 때 그곳에 외발자전거를 몇 대 두어야 하는지뿐이다. 그래서 애덤은 시작 대수를 여러 개 제시하며 각각의 총 대기 시간을 묻는다.

마지막 연산 이후에는 아무 일도 일어나지 않는다. 마지막 연산까지 처리한 뒤에도 대기열에 사람이 남아 있으면 그 사람들은 외발자전거를 받지 못하고, 총 대기 시간은 무한이다.

입력

첫 줄에 nn과 qq가 주어진다 (1≤n,q≤1051 \le n, q \le 10^5). nn은 중앙 대여소에서 일어나는 외발자전거 요청과 반납 연산의 총 개수이고, qq는 애덤이 묻는 질문의 개수다.

다음 nn개의 줄에 중앙 대여소의 연산이 한 줄에 하나씩 주어진다.

  • + t k: 시각 tt에 외발자전거 kk대를 반납한다.
  • - t k: 시각 tt에 kk명이 외발자전거를 요청한다.

모든 연산에서 1≤t≤1091 \le t \le 10^9, 1≤k≤1041 \le k \le 10^4이다. 연산은 시각이 증가하는 순서로 주어지고, 두 연산의 시각은 서로 다르다.

마지막 줄에 서로 다른 정수 b1,b2,…,bqb_1, b_2, \dots, b_q가 주어진다 (0≤bi≤1090 \le b_i \le 10^9). bib_i는 하루를 시작할 때 중앙 대여소에 두는 외발자전거 대수다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 외발자전거 bib_i대로 하루를 시작했을 때의 총 대기 시간을 출력한다. 총 대기 시간이 무한이면 그 줄에 INFINITY를 출력한다.

예제6

  1. 예제 1

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

    입력
    1 2
    - 1 1
    1 0
    
    예상 출력
    0
    INFINITY
    
  3. 예제 3

    입력
    3 3
    + 1 5
    + 500 3
    + 1000000000 10000
    0 1 1000000000
    
    예상 출력
    0
    0
    0
    
  4. 예제 4

    입력
    4 5
    - 1 3
    - 5 2
    - 9 4
    - 100 1
    0 3 9 10 1000000000
    
    예상 출력
    INFINITY
    INFINITY
    INFINITY
    0
    0
    
  5. 예제 5

    입력
    2 4
    - 1 10000
    + 1000000000 10000
    0 1 5000 10000
    
    예상 출력
    9999999990000
    9998999990001
    4999999995000
    0
    
  6. 예제 6

    입력
    8 6
    - 1 2
    + 3 1
    - 4 3
    + 10 2
    + 11 5
    - 12 4
    - 20 1
    + 30 3
    0 1 2 3 4 5
    
    예상 출력
    59
    31
    12
    6
    0
    0