动态逆序对[1]
时间限制:1秒 内存限制:256M
【问题描述】
对于序列 \(A[i]\),它的逆序对数定义为满足:\(i < j\),且 \(A[i] > A[j]\) 的数对\((i,j)\)的个数。
给 \(1\) 到 \(n\) 的一个排列,按照某种顺序依次删除 \(m\) 个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。
【输入格式】
输入第一行包含两个整数 \(n\) 和 \(m\),即初始元素的个数和删除的元素个数。
以下 \(n\) 行每行包含一个 \(1\) 到 \(n\) 之间的正整数,即初始排列。
以下 \(m\) 行每行一个正整数,依次为每次删除的元素。
【输出格式】
输出包含 \(m\) 行,依次为删除每个元素之前,逆序对的个数。
【输入输出样例】
Input
5 4
1
5
3
4
2
5
1
4
2
Output
5
2
2
1
【数据约定】
数据范围与约定:\(1≤n≤10^5\),\(1≤m≤5*10^4\)。
• 测试点 1-2 满足 \(n≤1000\),\(m≤100\)
• 测试点 3-4 满足 \(n≤30000\),\(m≤10000\)
• 测试点 5-6 满足 \(n≤50000\),\(m≤20000\)
• 测试点 7-8 满足 \(n≤60000\),\(m≤40000\)
• 测试点 9-10 满足 \(n≤100000\),\(m≤50000\)
【来源】
Mr.he