만드는 중입니다

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

검은 빚

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

요약
시간이 지나며 참가자의 점수가 오르고, 각 갱신 뒤에 검은 셔츠 참가자가 노란 셔츠 참가자보다 점수가 더 많은 (노랑, 검정) 쌍의 총수를 출력한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 이분 탐색, 정렬, 누적 합
정답자
아직 제출이 없습니다

문제

한 프로그래밍 대회에 nn명의 참가자가 참가한다. 대회 전에 말나르 씨가 참가자들에게 티셔츠를 나눠 주었다. 어떤 참가자는 노란 티셔츠를, 어떤 참가자는 검은 티셔츠를 받았고, 이로 인해 검은 팀과 노란 팀 사이에 라이벌 관계가 생겼다.

대회가 시작될 때 모든 참가자의 점수는 0점이며, 각 참가자의 티셔츠 색은 알려져 있다. 대회 중에 qq번의 점수 변화가 일어난다. ii번째 변화에서 참가자 xix_i가 did_i점을 추가로 얻는다.

노란 티셔츠를 입은 각 참가자는 자신의 벌점(소위 검은 빚)을, 그 시점에 자신보다 점수가 엄격히 더 높은 검은 티셔츠 참가자의 수로 계산한다. 각 점수 변화가 일어난 뒤 노란 티셔츠 참가자들의 벌점 합을 구해 출력하시오.

입력

첫째 줄에 문제에서 설명한 자연수 nn (1≤n≤1051 \le n \le 10^5)과 qq (1≤q≤3⋅1051 \le q \le 3 \cdot 10^5)가 주어진다.

다음 줄에는 각 참가자의 티셔츠 색을 나타내는 길이 nn의 문자열이 주어진다. 이 문자열의 각 문자는 ii번째 참가자의 티셔츠 색(검은색 또는 노란색)을 나타내는 대문자 C 또는 Z 중 하나이다. 검은 티셔츠를 입은 참가자와 노란 티셔츠를 입은 참가자가 각각 최소 한 명씩 존재한다.

다음 qq개 줄에는 자연수 xix_i (1≤xi≤n1 \le x_i \le n)와 did_i (1≤di≤3⋅1051 \le d_i \le 3 \cdot 10^5)가 한 줄에 하나씩 주어진다.

한 참가자가 대회에서 얻을 수 있는 최대 점수는 3⋅1053 \cdot 10^5이다.

출력

출력의 ii번째 줄에 ii번째 변화가 일어난 뒤의 총 검은 빚을 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    CZZ
    1 10
    2 20
    3 5
    
    예상 출력
    2
    1
    1
    
  2. 예제 2

    입력
    4 6
    CZCZ
    3 70
    3 30
    2 100
    1 10
    4 80
    1 100
    
    예상 출력
    2
    2
    1
    2
    1
    3