만드는 중입니다

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

강의실 예약 시스템

면접 대비

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

요약
시작 시각 순으로 들어오는 예약 요청마다 같은 강의실에 이미 수락된 예약과 겹치는지 판단해 YES 또는 NO를 출력합니다.
난이도

쉬움10점 중 3점

유형
배열, 그리디, 구현
정답자
아직 제출이 없습니다

문제

충남대학교 공대 5호관에는 11번부터 NN번까지 번호가 매겨진 NN개의 강의실이 있다. 학생들은 강의실 예약 시스템을 통해 원하는 강의실을 예약한 뒤에 이용한다. 강의실을 예약하려면 이용하려는 강의실 번호 kk와 이용 시작 시각 ss, 이용 끝 시각 ee를 예약 시스템에 보내야 한다.

어느 날 예약 시스템에 MM개의 예약 요청이 들어왔다. 요청은 이용 시작 시각 ss가 빠른 순서로 주어지며, 같은 시작 시각을 가진 요청은 없다. 시스템은 요청을 순서대로 확인한다. 어떤 요청이 같은 강의실에 대해 이미 수락한 예약과 겹치지 않으면 수락하고, 겹치면 거부한다. 한 예약의 끝 시각과 다른 예약의 시작 시각이 같은 경우는 겹친 것이 아니다.

MM개의 예약 요청이 주어질 때, 각 요청을 수락하는지 거부하는지 구하라.

입력

첫째 줄에 정수 NN, MM(1≤N,M≤200 0001 \le N, M \le 200\,000)이 주어진다.

둘째 줄부터 MM개의 줄에 ii번째 예약의 강의실 번호 kik_i(1≤ki≤N1 \le k_i \le N)와 이용 시작 시각 sis_i, 이용 끝 시각 eie_i(1≤si<ei≤1091 \le s_i < e_i \le 10^9)가 주어진다. 예약은 시작 시각 ss의 오름차순으로 주어지며, 같은 시작 시각을 가진 예약은 없다.

출력

MM개의 줄에 요청 순서대로 수락하면 YES, 거부하면 NO를 출력한다.

힌트

입출력이 느리면 여러 줄을 입력받거나 출력할 때 시간 초과가 날 수 있다.

C++에서 cin과 cout을 쓴다면 cin.tie(NULL)과 sync_with_stdio(false)를 모두 적용하고, endl 대신 개행 문자(\n)를 쓴다. 이렇게 설정하면 scanf, printf, puts, getchar, putchar 같은 C 방식의 입출력은 사용할 수 없다.

Java에서는 Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 쓸 수 있다. BufferedWriter.flush는 마지막에 한 번만 호출한다.

Python에서는 input 대신 sys.stdin.readline을 쓸 수 있다. 이때 끝의 개행 문자까지 함께 읽히므로, 문자열을 저장할 때는 .rstrip()을 붙이는 것이 좋다.

예제2

  1. 예제 1

    입력
    1 3
    1 2 3
    1 3 5
    1 4 6
    
    예상 출력
    YES
    YES
    NO
    
  2. 예제 2

    입력
    2 4
    1 1 4
    2 2 5
    1 3 7
    1 5 8
    
    예상 출력
    YES
    YES
    NO
    YES