CF2141C Minimum on Subarrays

题目描述

有一个变量 $sum$,初始值为 $0$。 还有一个数据结构,可以执行以下操作: - pushback x —— 将值为 $x$ 的元素添加到结构的末尾; - pushfront x —— 将值为 $x$ 的元素添加到结构的开头; - popback —— 删除结构中的最后一个元素; - popfront —— 删除结构中的第一个元素; - min —— 将当前结构中的最小元素的值加到变量 $sum$ 上。 操作 popback、popfront 和 min 不能应用于空的数据结构! 你希望利用这种结构,找到一个最多包含 $n \cdot (n + 2)$ 条命令的操作序列,使得在所有操作之后,变量 $sum$ 等于 $\sum_{0 \le l \le r < n} \min(a[l], \dots, a[r])$,其中 $a$ 是长度为 $n$ 的任意数组。 更正式地说,你的任务是:对任意可能的数组 $a$,给出不超过 $n \cdot (n + 2)$ 条命令的序列,使得所有操作之后,变量 $sum$ 的值等于所有非空子数组的最小值之和。

输入格式

第一行包含一个整数 $n$($1 \le n \le 500$),表示数组的元素个数。

输出格式

输出 $k$($1 \le k \le n \cdot (n + 2)$)条命令。每条命令必须是下列五种之一: - "pushback a[i]",其中 $i$ 是 $0$ 到 $n-1$ 之间的一个数字; - "pushfront a[i]",其中 $i$ 是 $0$ 到 $n-1$ 之间的一个数字; - "popback" - "popfront" - "min" 如果有多种合法答案,输出其中任意一种即可。

说明/提示

由 ChatGPT 5 翻译