选择后缀元素的排序¶
预估时间限制:0.5 秒。内存限制:256 MB。
实际时限以标准程序在目标环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。
背景故事¶
分拣站有一排带数值标签的货箱。每次指令选出一个货箱及它后方较小的货箱,整理这些位置上的数值。管理员想知道队列还有多少逆序对。
(本故事由GPT-6重写)
形式化问题描述¶
给定长度为 \(n\) 的整数数组 \(a\) .逆序对是满足 \(1\le i<j\le n\) 且 \(a_i>a_j\) 的下标对 \((i,j)\) .
一次操作选定位置 \(k\) .以操作开始时的数组为准,取
将这些位置上的数按非降顺序放回这些位置,较小的数放在较小的下标上。其余位置不变。集合包含位置 \(k\) 本身;等于 \(a_k\) 的后继位置不加入集合。
共有 \(m\) 次操作,每次输入整数 \(q\) .若 \(q>0\) ,选取 \(k=q\) ;否则选取
其中 \(\mathrm{ans}\) 是上一次输出,模运算结果在 \(0,\ldots,n-1\) 内。第一次操作使用初始逆序对数作为 \(\mathrm{ans}\) .
输入格式¶
第一行两个整数 \(n,m\) .第二行给出 \(a_1,\ldots,a_n\) .接下来 \(m\) 行,每行一个整数 \(q\) .
输出格式¶
输出 \(m+1\) 行:初始逆序对数,以及每次操作后的逆序对数。
样例¶
样例 1¶
输入¶
3 2
2 3 1
1
1
输出¶
2
1
1
样例 2¶
输入¶
4 2
2 2 1 0
1
1
输出¶
5
1
1
样例 3¶
输入¶
4 3
3 -1 3 0
-4
-8
2
输出¶
3
3
3
3
样例解释¶
样例一第一次选位置 \(1,3\) ,数组变为 \((1,3,2)\) ,只剩一个逆序对;再次选位置 \(1\) 不改变数组。样例二第一次选位置 \(1,3,4\) ,得到 \((0,2,1,2)\) ,第二次仍不改变数组。样例三展示负数指令的数学取模。
数据范围与保证¶
\(1\le n,m\le100000\) ,\(|a_i|\le10^9\) ,\(q\in[-10^9,-1]\cup[1,n]\) .输入均为整数。
| 分值比例 | 额外条件 |
|---|---|
| 100% | 无额外条件 |