#P350. 循环逆序对

循环逆序对

题目描述

给定一个长度为 nn 的数列 a1,a2,⋯ ,ana_1, a_2, \cdots, a_{n} 和一个整数 kk。将数列 aa 重复 kk 次,得到长度为 n×kn\times k 的循环数列 AA,AA 的正式定义如下:

  • AA 的前 nn 项等于 aa 的前 nn 项——对于 1≤i≤n1\leq i\leq n,有 Ai=aiA_i = a_{i};
  • 之后每个 AA 的元素 AiA_i,都有 Ai=Ai−nA_i = A_{i-n};

如果能够找到一对整数 (i,j)(i,j),满足 i<ji < j 且 Ai>AjA_i > A_j,则 (i,j)(i,j) 就是一对逆序对。请求出 AA 中的逆序对数量。

输入格式

  • 第一行:两个整数 nn 与 kk;
  • 第二行:nn 个整数 a1,a2,⋯ ,ana_1, a_2, \cdots, a_{n}。

输出格式

  • 单个整数:表示 AA 中逆序对数量。
3 2
3 1 4
5

数据范围

  • 对于 20%20\% 的数据,保证 1≤k≤101 \le k \le 10;
  • 对于 40%40\% 的数据,保证 1≤k≤50001\le k \le 5000;
  • 对于 60%60\% 的数据,保证 1≤k≤1000001\le k \le 100000;
  • 对于 100%100\% 的数据,保证 1≤k≤10000001 \le k \le 1000000
  • 1≤n≤50001\le n \le 5000, 1≤ai≤50001\le a_i \le 5000。