比赛 EYOI暨SBOI暑假快乐赛6th 评测结果 AAAATTTTTT
题目名称 千风的诗篇 最终得分 40
用户昵称 HeSn 运行时间 6.623 s
代码语言 C++ 内存使用 5.58 MiB
提交时间 2022-06-30 11:14:14
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n, m, a[100100], c[100100], id[100100], tot = 0;
bool v[100100] = {0};
int lowbit(int x) {
	return x & -x;
}
int add(int x, int w) {
	for(int i = x; i <= n; i += lowbit(i)) {
		c[i] += w;
	}
	return 0;
}
int sumup(int x) {
	int sum = 0;
	for(int i = x; i >= 1; i -=lowbit(i)) {
		sum += c[i];
	}
	return sum;
}
int main() {
	freopen("windy.in", "r", stdin);
	freopen("windy.out", "w", stdout);
	cin >> n >> m;
	for(int i = 1; i <= n; i ++) {
		cin >> a[i];
		id[a[i]] = i;
		tot += i - sumup(a[i]) - 1;
		add(a[i], 1);
	}
	for(int i = 1; i <= m; i ++) {
		int x;
		cin >> x;
		v[id[x]] = 1;
		cout << tot << endl;
		for(int j = 1; j < id[x]; j ++) {
			if(a[j] > x && v[j] == 0) {
				tot --;
			}
		}
		for(int j = id[x] + 1; j <= n; j ++) {
			if(a[j] < x && v[j] == 0) {
				tot --;
			}
		}
	}
	return 0;
}