403759: GYM101261 B Order Maintenance Structure
Memory Limit:64 MB
Time Limit:2 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
B. Order Maintenance Structuretime limit per test2 secondsmemory limit per test64 megabytesinputstandard inputoutputstandard output
You should implement a list that allows the following operations:
- < x — Given x not in the list, insert x in the beginning of the list.
- I x y — Given y not in the list and x in the list, insert y after the element x.
- D x — Given x in the list, remove element x from the list.
- O x y — Given x and y in the list, return YES if x comes before y in the list, or NO otherwise.
Initially, the list is empty.
All queries are online, that means you should flush the output before reading the input for the following query. Use fflush(stdout) for C/C++.
InputIn the first line an integer Q, the number of queries. Each of the next Q lines has a query, in the format given in the statement.
Limits
- 1 ≤ Q ≤ 2·105
- For all queries, x and y will be between 1 and 2·105.
For each query of type O, print YES or NO, the value returned. Don't forget to flush the output.
ExamplesInput5Output
< 1
< 2
O 1 2
I 2 10
O 10 1
NOInput
YES
10Output
< 1
I 1 2
I 1 3
I 1 4
I 1 5
I 1 6
I 1 7
O 7 6
O 3 7
O 6 4
YES
NO
YES