대기 시간 예측

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

보통7누적 합이분 탐색배열구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

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

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

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

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

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

입력

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

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

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

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

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

출력

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