AT_pakencamp_2025_day3_n Complete Set
题目描述
**本题为交互题。**
有 $X$ 种类的亚克力立牌进行贩卖。一开始,第 $i$ 种类的亚克力立牌有 $A_i$ 个库存。
接下来会有 $N$ 位顾客到来。顾客分为以下两类,请按顺序处理:
- 购买单品的顾客。在库存中任选一种,售出 1 个即可。
- 购买全套的顾客。每种类的亚克力立牌各售出 1 个。
但如果库存已无货,无法售出时需要报告(有库存却报告无法销售是不允许的)。另外,**如果改变过去的售卖方式能让当前顾客买到,也不允许报告无法售出。**
输入格式
首先,从标准输入读入 $X, N, A$。
> $X$ $N$ $A_1$ $A_2$ $\dots$ $A_X$
接着,与顾客进行恰好 $N$ 轮交互,每一轮格式如下。
首先,输入一个正整数 $T$。
> $T$
其中,$T$ 可以为 $-1$、$1$、$2$,含义分别为:
- $T=1$ 时,表示来了一个购买单品的顾客。
- $T=2$ 时,表示来了一个购买全套的顾客。
- $T=-1$ 时,表示前面的交互格式不符合要求。
- 此时程序已被判定为不正确,请立刻退出程序。
若遇到购买单品的顾客,请输出 $-1$ 或 $1$~$X$ 之间的整数 $s$。
> $s$
输出 $-1$ 表示报告无法销售。在实际上还能出售、或改变过去售卖顺序就能售出时,判为格式错误。
否则输出 $s$,表示出售第 $s$ 种类的亚克力立牌。若实际库存已无此种类,则为格式错误。
遇到购买全套的顾客时,请输出 $-1$ 或 $1$ 的整数 $c$。
> $c$
输出 $-1$ 表示报告无法销售。在实际上还能出售或改变售卖顺序能售出时,判为格式错误。
输出 $1$ 表示售出全套,每种类各一个。若有任意一种无库存,则为格式错误。
应对完 $N$ 位顾客之后,将输入一个正整数 $J$。
> $J$
$J$ 的含义如下:
- $J=1$ 时,表示已正确处理所有顾客。程序应立刻退出,判为正确。
- $J=-1$ 时,表示前面的交互格式不正确。
- 程序已判为不正确,请立刻退出。
若有不符格式的输出,输入中将出现:
```
-1
```
此时程序已判为不正确,请立刻退出。
输出格式
(略。见输入格式,所有交互均为标准输入输出。)
说明/提示
### 致Universal Cup参赛者
本题在Universal Cup收录时将被删除。因此若想用AtCoder结果参加Universal Cup,建议先做其它题。
### 注意事项
- **每次输出后请务必换行,并及时 flush 标准输出,否则判题结果可能会为 TLE。**
- 输出答案或从标准输入读到 `-1` 时,请立刻推出程序。否则判定结果不确定。
- 多余的换行会被视为输出格式错误。
- **本题的判题系统是自适应(adaptive)的。** 也就是说,判题器可能会根据你和它之前的交互动态改变顾客类型。
### 输入输出示例
以 $X=3,N=5,A=(2,3,3)$ 为例,交互过程可能如下:
输入 输出 说明
3 5 从标准输入读入 $X,N$
2 3 3 从标准输入读入 $A=(A_1,A_2,\dots,A_X)$
1 有单品顾客来
2 卖出第 2 种
2 有全套顾客来
1 卖出一套
2 有全套顾客来
1 再卖一套
2 有全套顾客来
-1 无法售出
1 有单品顾客来
3 卖出第 3 种
1 全部顾客正确处理,此时应立刻退出,判定为正确
请注意这只是其中一种可能的交互。
# 数据范围与约定
- $2 \leq X \leq 20$
- $1 \leq N \leq 2000$
- $1 \leq A_i \leq 100$
- 所有输入均为整数。
由 ChatGPT 5 翻译