A14034 | Berpizza
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Monocarp and Polycarp are working as waiters in Berpizza, a pizzeria located near the center of Bertown. Since they are waiters, their job is to serve the customers, but they choose whom they serve first differently.
At the start of the working day, there are no customers at the Berpizza. They come there one by one. When a customer comes into the pizzeria, she sits and waits for Monocarp or Polycarp to serve her. Monocarp has been working in Berpizza for just two weeks, so whenever he serves a customer, he simply chooses the one who came to Berpizza first, and serves that customer.
On the other hand, Polycarp is an experienced waiter at Berpizza, and he knows which customers are going to spend a lot of money at the pizzeria (and which aren't) as soon as he sees them. For each customer, Polycarp estimates the amount of money this customer can spend, and when he serves a customer, he chooses the one that is expected to leave the most money at Berpizza (in case there are several such customers, he chooses the one who came first among them).
Obviously, no customer can be served twice, so Monocarp and Polycarp choose which customer to serve only among those who haven't been served yet.
When the number of customers gets really high, it becomes difficult for both Monocarp and Polycarp to choose the customer they are going to serve. Your task is to write a program that makes these choices for them. Formally, your program should be able to process three types of queries:
- $1$ $m$ — a customer comes to Berpizza, and Polycarp estimates the amount of money that they will spend as $m$ ;
- $2$ — Monocarp serves a customer which came to the pizzeria first;
- $3$ — Polycarp serves a customer which is expected to spend the largest amount of money at the pizzeria (if there are several such customers, the one that came to the pizzeria first is chosen).
For each query of types $2$ and $3$ , report the number of the customer who was served (the customers are numbered in the order they come to the pizzeria, starting from $1$ ).
At the start of the working day, there are no customers at the Berpizza. They come there one by one. When a customer comes into the pizzeria, she sits and waits for Monocarp or Polycarp to serve her. Monocarp has been working in Berpizza for just two weeks, so whenever he serves a customer, he simply chooses the one who came to Berpizza first, and serves that customer.
On the other hand, Polycarp is an experienced waiter at Berpizza, and he knows which customers are going to spend a lot of money at the pizzeria (and which aren't) as soon as he sees them. For each customer, Polycarp estimates the amount of money this customer can spend, and when he serves a customer, he chooses the one that is expected to leave the most money at Berpizza (in case there are several such customers, he chooses the one who came first among them).
Obviously, no customer can be served twice, so Monocarp and Polycarp choose which customer to serve only among those who haven't been served yet.
When the number of customers gets really high, it becomes difficult for both Monocarp and Polycarp to choose the customer they are going to serve. Your task is to write a program that makes these choices for them. Formally, your program should be able to process three types of queries:
- $1$ $m$ — a customer comes to Berpizza, and Polycarp estimates the amount of money that they will spend as $m$ ;
- $2$ — Monocarp serves a customer which came to the pizzeria first;
- $3$ — Polycarp serves a customer which is expected to spend the largest amount of money at the pizzeria (if there are several such customers, the one that came to the pizzeria first is chosen).
For each query of types $2$ and $3$ , report the number of the customer who was served (the customers are numbered in the order they come to the pizzeria, starting from $1$ ).
输入格式
The first line contains one integer $q$ ( $2 \le q \le 5 \cdot 10^5$ ) — the number of queries.
Then $q$ lines follow, each describing a query in one of the following formats:
- $1$ $m$ ( $1 \le m \le 5 \cdot 10^5$ ) — a customer comes to Berpizza, and Polycarp estimates the amount of money that they will spend as $m$ ;
- $2$ — Monocarp serves a customer which came to the pizzeria first;
- $3$ — Polycarp serves a customer which is expected to spend the largest amount of money at the pizzeria (if there are multiple such customers, the one that came to the pizzeria first is chosen).
Queries of type $2$ and $3$ are asked only when there exists at least one customer that hasn't been served yet. There is at least one query of type $2$ or $3$ in the input.
Then $q$ lines follow, each describing a query in one of the following formats:
- $1$ $m$ ( $1 \le m \le 5 \cdot 10^5$ ) — a customer comes to Berpizza, and Polycarp estimates the amount of money that they will spend as $m$ ;
- $2$ — Monocarp serves a customer which came to the pizzeria first;
- $3$ — Polycarp serves a customer which is expected to spend the largest amount of money at the pizzeria (if there are multiple such customers, the one that came to the pizzeria first is chosen).
Queries of type $2$ and $3$ are asked only when there exists at least one customer that hasn't been served yet. There is at least one query of type $2$ or $3$ in the input.
输出格式
For each query of type $2$ or $3$ , print one integer — the number of the customer that has been served in that event. The customers are numbered in the order in which they come to the pizzeria, starting from $1$ .
输入输出样例
输入 #1
8 1 8 1 10 1 6 3 2 1 9 2 3
输出 #1
2 1 3 4
输入 #2
6 1 8 1 10 1 8 3 3 3
输出 #2
2 1 3
输入 #3
8 1 103913 3 1 103913 1 103913 3 1 103913 1 103913 2
输出 #3
1 2 3
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted