아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

로그인/로그아웃 기록 분석

면접 대비

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

요약
PC 로그인과 로그아웃 기록이 주어질 때, 각 질의 구간에서 한 학생이 적어도 한 대의 PC를 사용한 시간을 분 단위로 계산한다.
난이도

보통10점 중 5점

유형
구간, 시뮬레이션, 정렬, 구현
정답자
아직 제출이 없습니다

문제

어느 대학의 컴퓨터 실습 강좌에서는 하루 동안 모든 PC의 로그인/로그아웃 기록을 파일에 저장한다. 한 학생이 동시에 두 대 이상의 PC를 사용할 수도 있지만, 아직 로그아웃하지 않은 사람이 로그인해 둔 PC에는 다른 사람이 로그인할 수 없다.

주어진 시간 구간(예: 실습 수업 시간) 동안, 한 학생이 적어도 한 대 이상의 PC를 사용하고 있던 총 시간을 기록으로부터 계산하는 프로그램을 작성하여라.

다음은 로그인/로그아웃 기록의 한 예시이다.

  • 학생 1이 12:55에 PC 1에 로그인
  • 학생 2가 13:00에 PC 4에 로그인
  • 학생 1이 13:10에 PC 2에 로그인
  • 학생 1이 13:20에 PC 2에서 로그아웃
  • 학생 1이 13:30에 PC 3에 로그인
  • 학생 1이 13:40에 PC 1에서 로그아웃
  • 학생 1이 13:45에 PC 3에서 로그아웃
  • 학생 1이 14:20에 PC 1에 로그인
  • 학생 2가 14:30에 PC 4에서 로그아웃
  • 학생 1이 14:40에 PC 1에서 로그아웃

"13:00부터 14:30 사이에 학생 1이 사용한 시간을 구하라"라는 질의에 대해서는 "55분"을 출력해야 한다. 이는 13:00부터 13:45까지의 45분과 14:20부터 14:30까지의 10분을 더한 값이다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 입력의 끝은 공백으로 구분된 두 개의 0(0 0)만 있는 줄로 나타낸다. 데이터셋의 개수는 10을 넘지 않는다.

각 데이터셋의 형식은 다음과 같다.

N M
r
record1
...
recordr
q
query1
...
queryq

첫 줄의 NN과 MM은 각각 PC의 수와 학생의 수이다. rr은 기록의 수, qq는 질의의 수이다. 이 네 정수는 다음을 만족한다.

  • 1≤N≤10001 \le N \le 1000, 1≤M≤100001 \le M \le 10000, 2≤r≤10002 \le r \le 1000, 1≤q≤501 \le q \le 50

각 기록은 공백으로 구분된 네 정수 t n m st\ n\ m\ s 로 이루어진다.

ss는 0 또는 1이다. ss가 1이면 학생 mm이 시각 tt에 PC nn에 로그인했음을, ss가 0이면 학생 mm이 시각 tt에 PC nn에서 로그아웃했음을 뜻한다. 시각은 그날 0시 0분부터 경과한 분(minute)으로 표현된다. tt, nn, mm은 다음을 만족한다.

  • 540≤t≤1260540 \le t \le 1260, 1≤n≤N1 \le n \le N, 1≤m≤M1 \le m \le M

기록에 대해 다음을 가정할 수 있다.

  • 기록은 시각 tt의 오름차순으로 저장되어 있다.
  • 같은 PC에 대해 시각 tt가 같은 기록은 존재하지 않는다.
  • 파일의 첫 기록 이전이나 마지막 기록 이후에는 로그인 상태인 PC가 없다.
  • 한 PC에 대한 로그인과 로그아웃 기록은 번갈아 나타나며, 각 로그인-로그아웃 쌍은 같은 학생에 대한 것이다.

각 질의는 공백으로 구분된 세 정수 ts te mt_s\ t_e\ m 으로 이루어진다.

이는 "tst_s부터 tet_e 사이에 학생 mm이 사용한 시간"을 뜻한다. tst_s, tet_e, mm은 다음을 만족한다.

  • 540≤ts<te≤1260540 \le t_s < t_e \le 1260, 1≤m≤M1 \le m \le M

출력

각 질의에 대해, 사용 시간(분)을 나타내는 10진 정수 하나를 한 줄에 출력한다. 출력 줄에는 이 숫자 외의 다른 문자가 있어서는 안 된다.

예제1

  1. 예제 1

    입력
    4 2
    10
    775 1 1 1
    780 4 2 1
    790 2 1 1
    800 2 1 0
    810 3 1 1
    820 1 1 0
    825 3 1 0
    860 1 1 1
    870 4 2 0
    880 1 1 0
    1
    780 870 1
    13 15
    12
    540 12 13 1
    600 12 13 0
    650 13 15 1
    660 12 15 1
    665 11 13 1
    670 13 15 0
    675 11 13 0
    680 12 15 0
    1000 11 14 1
    1060 12 14 1
    1060 11 14 0
    1080 12 14 0
    3
    540 700 13
    600 1000 15
    1000 1200 11
    1 1
    2
    600 1 1 1
    700 1 1 0
    5
    540 600 1
    550 650 1
    610 620 1
    650 750 1
    700 800 1
    0 0
    
    예상 출력
    55
    70
    30
    0
    0
    50
    10
    50
    0