记录编号 193087 评测结果 AAAAAAAAAA
题目名称 [NOIP 2013]火柴排队 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.083 s
提交时间 2015-10-13 20:25:21 内存使用 2.58 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
struct stick
{
	int h,id;
}a[100001],b[100001];
int n,ans,id[100001];
inline bool comp(stick a,stick b)
{
	return a.h<b.h;
}
int tree[100001];
inline void add(int x)
{
	while(x<n)
	{
		++tree[x];
		x+=x&(-x);
	}
}
inline int sum(int x)
{
	int end=0;
	while(x)
	{
		end+=tree[x];
		x-=x&(-x);
	}
	return end;
}
int TEMP,EPX;
inline int in()
{
	TEMP=0;EPX=getchar();
	while(EPX<48||EPX>57)
		EPX=getchar();
	for(;EPX>47&&EPX<58;EPX=getchar())
		TEMP=(TEMP<<3)+(TEMP<<1)+EPX-48;
	return TEMP;
}
int main()
{
	freopen("MatchNOIP2013.in","r",stdin);
	freopen("MatchNOIP2013.out","w",stdout);
	n=in()+1;
	for(int i=1;i<n;++i)
		a[i].h=in(),a[i].id=i;
	for(int i=1;i<n;++i)
		b[i].h=in(),b[i].id=i;
	std::sort(a+1,a+n,comp);
	std::sort(b+1,b+n,comp);
	for(int i=1;i<n;++i)
		id[a[i].id]=b[i].id;
	for(int i=1;i<n;++i)
	{
		add(id[i]);
		ans=(ans+i-sum(id[i]))%99999997;
	}
	printf("%d",ans);
}