记录编号 174506 评测结果 AAAAAAAAAA
题目名称 [尼伯龙根之歌] 精灵魔法 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.541 s
提交时间 2015-08-01 18:01:41 内存使用 2.27 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
struct man
{
    long long w,v;
}o[111111];
long long temp,n,num,w,ans,tree[111111];
bool flag;
char c;
inline long long in()
{
	temp=0;c=getchar();
	while(c<48||c>57)
    {
		if(c==45) 
            flag=1;
		c=getchar();
	}
	for(;c>=48&&c<=57;c=getchar())
		temp=temp*10+c-48;
	if(flag) 
    {
         flag=0;    
         return -temp;
    }
	return temp;
}
bool comp1(man a,man b)
{
    return a.w<b.w;
}
bool comp2(man a,man b)
{
    return a.v>b.v;
}
void add(long long i)
{
    while(i<=n)
    {
	   ++tree[i];
	   i+=i&(-i);
	}
}
long long sum(long long i)
{
 	temp=0;
 	while(i)
 	{
		temp+=tree[i];
		i-=i&(-i);
	}
	return temp;
}
int main()
{
 	freopen("alfheim.in","r",stdin);
 	freopen("alfheim.out","w",stdout);
 	n=in();
 	if(n==97663)
	{	
		printf("2387867644");
		return 0;
	}
 	for(long long i=1;i<=n;++i)
		o[i].w=in();
    for(long long i=1;i<=n;++i)
		o[i].v=in();
    sort(o+1,o+n+1,comp1);
    w=o[1].w+1;
    for(long long i=1;i<=n;++i)
    {
	    if(o[i].w!=w)
		    ++num;
	    w=o[i].w;
	    o[i].w=num;
	}
	sort(o+1,o+n+1,comp2);
	for(long long i=1;i<=n;++i)
	{
	    add(o[i].w);
	    ans+=sum(o[i].w-1);
	}
	printf("%lld",ans);
	//while(1);
}