记录编号 269096 评测结果 AAAAAAAAAA
题目名称 [尼伯龙根之歌] 精灵魔法 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.468 s
提交时间 2016-06-13 08:16:38 内存使用 2.20 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100005;
int x[maxn],v[maxn],a[maxn],dict[maxn];
bool cmp(const int &a,const int &b){
	return x[a]<x[b];
}
bool cmp2(const int &a,const int &b){
	return v[a]<v[b];
}
int lowbit(int x){
	return x&(-x);
}
int c[maxn];
void add(int x){
	for(;x;x-=lowbit(x))c[x]++;
}
int sum(int x){
	int ans=0;
	for(;x<maxn;x+=lowbit(x))ans+=c[x];
	return ans;
}
int main(){
	freopen("alfheim.in","r",stdin);
	freopen("alfheim.out","w",stdout);
	int n;scanf("%d",&n);
	for(int i=1;i<=n;++i)scanf("%d",x+i),a[i]=i;
	for(int i=1;i<=n;++i)scanf("%d",v+i);
	sort(a+1,a+n+1,cmp2);
	int tot=1;
	for(int i=1;i<=n;++i){
		if(v[a[i]]!=v[a[i-1]])dict[a[i]]=++tot;
		else dict[a[i]]=tot;
	}
	sort(a+1,a+n+1,cmp);
	long long cnt=0;
	for(int i=1;i<=n;++i){
		add(dict[a[i]]);
		cnt+=sum(dict[a[i]]+1);
	}
	printf("%lld",cnt);
	fclose(stdin);fclose(stdout);
	return 0;
}