연습문제

[한양대 HCPC 2023] 저녁 뭐 먹지?

난이도
Lv. 5
제출
74 명
참가자
15 명
정답률
100.00 %
지원 언어
C
C++
Java
Python
JavaScript
언어별 시간/메모리
언어별 시간/메모리 표
언어 시간 메모리
C++ 3초 1024MB
JavaScript 10초 1024MB
C 3초 1024MB
Java 6초 1024MB
Python 10초 2048MB

선아와 친구들은 함께 저녁을 먹으러 가고 있다. 그때 친구 중 한 명이 금지된 질문을 해버리고 말았다.


“저녁 뭐 먹지?”


심각할 정도로 우유부단한 선아와 친구들은 저녁 메뉴 결정을 서로 떠넘기게 되었다. 이러다 다 같이 굶겠다는 생각이 든 선아는 다음 방법을 제안했다.


선아를 포함한 N명의 친구들이 있다. 메뉴는 0개 이상의 특징을 가지며, 각 특징은 1 이상 100,000 이하인 정수로 표현된다. 또한 한양대학교 근처에는 식당이 굉장히 많아서 가능한 모든 특징의 조합에 대해 정확히 그 조합을 가진 메뉴가 존재한다. 이제 각 친구는 1번부터 N번까지 순서대로 다음 두 가지 행동 중 하나를 수행한다.


- 1 a b : 저녁 메뉴에 대한 의견을 나타내는 두 정수 a와 b를 제시한다. 각 의견은 절댓값이 1 이상 100,000 이하인 정수이며, 이 정수의 절댓값은 메뉴의 특징을 나타낸다. 이 정수가 양수인 경우 그 특징을 가져야 함을, 음수인 경우 그 특징을 가지면 안 됨을 의미한다.


- 2: 현재까지 의견을 제시한 친구들을 모두 만족시키는 메뉴가 존재하는지 확인한 후 결과를 알려준다. 어떤 친구를 만족시키기 위해선 그 친구가 제시한 두 의견 중 최소 하나가 메뉴에 반영되어야 한다.


선아와 친구들의 행동이 주어질 때 2번 행동의 결과를 출력하는 프로그램을 작성해 보자.

제약조건

1 ≤ N ≤ 200,000

1 ≤ |a|, |b| ≤ 100,000

입력형식

첫 번째 줄에 선아를 포함한 친구의 수 N이 주어진다.

두 번째 줄부터 N개의 줄에 걸쳐 1번 친구부터 N번 친구까지 순서대로 각 친구의 행동에 대한 정보가 한 줄에 하나씩 주어진다. 1번 행동인 경우 세 정수 1, a, b가 공백으로 구분되어 주어진다. 2번 행동인 경우 정수 2 하나만 주어진다. 2번 행동은 적어도 한 번은 주어진다.

출력형식

 2번 행동이 입력으로 들어올 때마다 그 시점까지 의견을 제시한 친구들을 모두 만족시키는 메뉴가 존재한다면 YES DINNER를, 존재하지 않는다면 NO DINNER를 출력한다.


입력예제1

5 1 -1 2 1 -2 3 1 1 3 1 3 2 2

출력예제1

YES DINNER

입력예제2

4 1 1 1 2 1 -1 -1 2

출력예제2

YES DINNER NO DINNER

입력예제3

1 2

출력예제3

YES DINNER