#P2189. 「CCO 2020」赶作业 ddl

「CCO 2020」赶作业 ddl

题目描述

译自 CCO 2020 Day1 T2「Exercise Deadlines」,翻译者: ShineEternal。


给定一个长度为 NN 的序列 did_i。

你有一个长度为 NN 的序列 aia_i,初始状态下 ai=ia_i=i。

你需要每次交换序列 aia_i 中相邻的两个数,使得最终满足对于任意的 1≤i≤n1\le i\le n,均有 ai≤dia_i\le d_i。求出最少需要多少次。

输入格式

输入第一行一个整数 NN。

第二行共 NN 个整数 did_i。

输出格式

输出最少的交换次数。

样例 1

4
4 4 3 2
3

最优方案之一为 (1,4,3,2)(1,4,3,2),可通过三次交换由 (1,2,3,4)(1,2,3,4) 得到。

3
1 1 3
-1

有两个 11,aia_i 数组中不存在两个 ≤1\le 1 的数,故无解。

数据范围与提示

对于 68%68\% 的数据,保证 N≤5000N\le 5000;
对于 100%100\% 的数据,保证 1≤N≤2×1051\le N\le 2\times 10^5,1≤di≤N1\le d_i\le N。