#P51321. 「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 中相邻的两个数,使得最终满足对于任意的 1in1\le i\le n,均有 aidia_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

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

数据范围与提示

对于 68%68\% 的数据,保证 N5000N\le 5000
对于 100%100\% 的数据,保证 1N2×1051\le N\le 2\times 10^51diN1\le d_i\le N