#CF933E. A Preponderant Reunion

A Preponderant Reunion

A Preponderant Reunion

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

给定一个长度为 nn 的非负整数序列 p1,p2,…,pnp_1,p_2,\ldots,p_n。在整个过程中,序列中的数必须保持非负。

一次操作按以下方式进行:

  1. 选择一个下标 ii(1≤i<n1\le i<n),要求当前 pip_i 与 pi+1p_{i+1} 都为正数;
  2. 令 d=min⁡(pi,pi+1)d=\min(p_i,p_{i+1});
  3. 将 pip_i 和 pi+1p_{i+1} 同时减去 dd,本次操作的代价为 dd。

当序列中不再存在两个相邻的正整数时,过程结束。请输出一组使总代价最小的合法操作。可以证明,所需操作数不超过 n−1n-1。

输入格式

第一行包含一个整数 nn。

第二行包含 nn 个整数 p1,p2,…,pnp_1,p_2,\ldots,p_n。

输出格式

第一行输出一个整数 mm,表示操作次数。

接下来 mm 行按执行顺序输出操作的下标 ii,表示对当前位置 ii 与 i+1i+1 执行一次操作。

如果存在多组最优解,输出任意一组均可。

样例输入 1

4
2 1 3 1

样例输出 1

2
1
3

样例输入 2

5
2 2 1 3 1

样例输出 2

3
2
1
4

数据范围

对于所有数据,1≤n≤3⋅1051\le n\le3\cdot10^5,0≤pi≤1090\le p_i\le10^9。

子任务编号 分值 特殊限制
1 30 n≤12n\le12 且 pi≤1p_i\le1
2 pi≤1p_i\le1
3 40 无特殊限制

每个测试点独立计分。输出由特殊判断程序验证;任意总代价最小的合法操作序列均会被接受。