#CF2141C. 子数组最小值求和
子数组最小值求和
C. 子数组最小值求和
时间限制: 每测试 秒
内存限制: 每测试 兆字节
有一个变量 ,初始值为 。
还有一个数据结构,可以执行以下操作:
pushback x— 将值为 的元素添加到结构末尾;pushfront x— 将值为 的元素添加到结构开头;popback— 从结构中移除最后一个元素;popfront— 从结构中移除第一个元素;min— 将结构中当前最小元素的值加到变量 上。
操作 popback、popfront 和 min 不能应用于空结构!
使用该数据结构,你希望能够求出数组 (包含 个元素)的所有非空子数组的最小值之和。
更形式化地说,你的任务是找到一个长度不超过 的命令序列,使得在所有操作执行完毕后,变量 等于:
$$\sum_{0 \leq l \leq r < n} \min(a[l], \dots, a[r]) $$且该序列应对任意可能的数组 都成立。
输入格式
第一行包含一个整数 — 数组的元素个数。
输出格式
输出 条命令。每条命令必须是以下五行之一:
"pushback a[i]",其中 — 从 到 的数字"pushfront a[i]",其中 — 从 到 的数字"popback""popfront""min"
如果存在多个有效答案,输出任意一个即可。
样例
输入
1
输出
3
pushback a[0]
min
popfront
输入
2
输出
6
pushfront a[1]
min
pushback a[0]
min
popfront
min