记录编号 321915 评测结果 AAAAAAAAAA
题目名称 罗伊德的防晒霜 最终得分 100
用户昵称 Gravatarkxxy 是否通过 通过
代码语言 C++ 运行时间 0.986 s
提交时间 2016-10-14 09:33:29 内存使用 15.57 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000010;
const int mod=19283746;
int sum;
long long ans=0;
struct node
{
	int n,lonely;
	bool operator <(const node& a)const
	{
		return n<a.n;
	}
}bb[maxn],ll[maxn];
inline int read()
{
	int x=0;
	char c=getchar();
	while(c<'0'||c>'9')
		c=getchar();
	while(c>='0'&&c<='9')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return x;
}
inline void msort(int x,int y)
{
	if(x>=y)
		return ;
	int m=(x+y)>>1;
	msort(x,m);
	msort(m+1,y);
	int p=x,q=m+1,i=x;
	while(p<=m||q<=y)
	{
		if(q>y||(p<=m&&bb[p].lonely<=bb[q].lonely))
			ll[i++]=bb[p++];
		else
			ll[i++]=bb[q++],ans+=m-p+1;
	}
	for(i=x;i<=y;i++)
		bb[i]=ll[i];
}
int main()
{
	freopen("EOADtulad.in","r",stdin);
	freopen("EOADtulad.out","w",stdout);
	sum=read();
	for(int i=1;i<=sum;i++)
		bb[i].n=read(),bb[i].lonely=read();
	sort(bb+1,bb+sum+1);
	msort(1,sum);
	printf("%d",ans%mod);
	return 0;
}