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 翻译