의심스러운 표본

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

요약
각 조건마다 직전 시간 구간에 속한 표본들의 최솟값, 최댓값, 평균과 값을 비교해 조건을 만족하는 표본 수를 센다.
난이도

보통10점 중 6점

유형
슬라이딩 윈도우, 큐, 배열, 구현
정답자
아직 제출이 없습니다

문제

파티마는 연구자다. 지금은 자기 나라 하천 유역의 물 순환을 연구한다. 기후와 관련된 여러 값을 재는 기상 관측소에서 표본을 모으고, 그 표본에서 흥미로운 패턴을 찾는다. 파티마가 쓰는 프로그램은 들어오는 표본 자료를 실시간으로 읽어서 어떤 의미로든 흥미롭거나 의심스러운 표본을 출력한다. 표본이 흥미로운지 의심스러운지는 미리 정해 둔 조건 집합으로 판정한다. "값이 최근 두 시간의 평균보다 크다", "값이 최근 5분 안의 어떤 값보다도 작다" 같은 조건이라 프로그램으로 옮기기 쉽다.

오늘 파티마는 어제 얻은 결과를 의심하고 있어서, 숙련된 프로그래머인 당신을 찾아왔다. 자기 프로그램이 자료를 제대로 평가하지 못했다고 보고 결과를 검증해 달라고 부탁한다. 파티마는 표본 수열 전체와 조건 집합을 알려 준다. 표본을 읽어 조건에 맞는 출력을 만들어라. 파티마는 당신 프로그램의 출력과 자기 프로그램의 출력을 견주어 다음에 무엇을 할지 정한다.

입력

입력은 여러 테스트 케이스로 이루어진다. 파일의 끝까지 처리한다.

각 테스트 케이스의 첫 줄에는 표본의 개수 NN (1≤N≤1051 \le N \le 10^5)이 주어진다. 이어지는 NN개의 줄에는 표본이 하나씩 주어진다. 각 줄에는 정수 TiT_i와 ViV_i (1≤Ti≤1091 \le T_i \le 10^9, 1≤Vi≤1041 \le V_i \le 10^4)가 있고, 시각 TiT_i에 표본 값 ViV_i를 얻었다는 뜻이다. 시각은 과거의 어떤 고정된 순간부터 흐른 초 단위이고, 강한 증가 수열을 이룬다 (1≤i<k≤N1 \le i < k \le N인 모든 ii, kk에 대해 Ti<TkT_i < T_k).

그다음 줄에는 평가할 조건의 개수 CC (1≤C≤101 \le C \le 10)가 주어진다. 이어지는 CC개의 줄에는 조건 CjC_j가 하나씩 주어지고, 각 줄은 공백으로 구분한 토큰 세 개로 이루어진다.

  • 관계 연산자 RjR_j. gt(초과) 또는 lt(미만)이다.
  • 집계 함수 FjF_j. min(최솟값), max(최댓값), avg(평균) 중 하나다.
  • 살펴볼 시간 구간의 길이 LjL_j (1≤Lj≤1091 \le L_j \le 10^9). 단위는 초다.

조건은 표본 값 ViV_i가 그보다 앞서 얻은 표본의 집계값과 어떤 관계인지 확인한다. 어떤 집계값인지는 FjF_j가 정한다.

정확히 말하면 SijS_{ij}는 ViV_i보다 먼저 얻었으면서 LjL_j초보다 더 이르지는 않은 표본 전체의 집합, 즉 Ti−Lj≤Tk<TiT_i - L_j \le T_k < T_i인 표본 kk 전부다. 표본 값 ViV_i는 관계 Vi  Rj  Fj(Sij)V_i \; R_j \; F_j(S_{ij})가 성립할 때, 그리고 오직 그때만 조건 CjC_j를 만족한다. 예를 들어 표본 값 800과 조건 lt min 300은 "이 800을 얻기 직전 5분 동안 얻은 표본 값의 최솟값보다 800이 작은가?"로 읽는다. 표본 ViV_i 자신은 SijS_{ij}에 들어가지 않는다. avg는 반올림하지 않은 정확한 평균이다.

모든 테스트 케이스의 NN을 더한 값은 10510^5을 넘지 않는다.

출력

각 테스트 케이스마다 조건을 입력에 주어진 순서대로 처리해서, 조건마다 그 조건을 만족하는 표본 값의 개수를 한 줄에 하나씩 출력한다. 조건이 정한 시간 구간에 표본이 하나도 없으면 그 조건은 만족한 것으로 세지 않는다.

예제2

  1. 예제 1

    입력
    10
    60 30
    120 28
    180 35
    240 34
    300 40
    360 31
    420 28
    480 2
    540 42
    600 30
    2
    gt avg 7200
    lt min 300
    
    예상 출력
    4
    2
    
  2. 예제 2

    입력
    1
    500 77
    3
    gt avg 1000
    lt min 1000
    gt max 1
    3
    10 5
    20 5
    30 5
    4
    gt max 100
    lt min 100
    gt avg 100
    lt avg 100
    
    예상 출력
    0
    0
    0
    0
    0
    0
    0