记录编号 327439 评测结果 AAAAAAAAAA
题目名称 罗伊德的防晒霜 最终得分 100
用户昵称 Gravatarjmisnal 是否通过 通过
代码语言 C++ 运行时间 0.999 s
提交时间 2016-10-21 22:32:25 内存使用 11.76 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#define mod 19283746
using namespace std;
int read()
{
	int x=0;char ch=getchar();
	while(ch<'0'||ch>'9')ch=getchar();
	while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
	return x;
}
struct data{
	int cx,v;
	bool operator <(const data &b)const
	{
		return cx<b.cx;
	}
}node[1000050];
int a[1000050];
int n,cnt=0;

void merge_sort(int l,int r)
{
	if(r-l<1)return ;
	int mid=(l+r)>>1,p=l,q=mid+1,i=l;
	merge_sort(l,mid);
	merge_sort(mid+1,r);
//	cnt%=mod;
	while(p<=mid||q<=r)
	{
		if(q>r||( p<=mid&&node[p].v<=node[q].v ))a[i++]=node[p++].v;
		else a[i++]=node[q++].v,cnt+=mid-p+1;
		if(cnt>mod)cnt-=mod;
	}
	for(int i=l;i<=r;i++)node[i].v=a[i];
//	cnt%=mod;
//	cout<<l<<' '<<r<<' '<<cnt<<endl;
}

/*void merge(int l,int m,int r)
{
	int i=l,j=m+1,k=l;
	while(i<=m&&j<=r)
	{
		if(node[i].v>node[j].v)
		{
			a[k++]=node[j++].v;
			cnt=(cnt+m-i+1)%mod;
		}
		else a[k++]=node[i++].v;
	}
	while(i<=m)a[k++]=node[i++].v;
	while(j<=r)a[k++]=node[j++].v;
	for(int i=l;i<=r;i++)
		node[i].v=a[i];
}
void merge_sort(int l,int r)
{
	if(l<r)
	{
		int mid=(l+r)>>1;
		merge_sort(l,mid);
		merge_sort(mid+1,r);
		merge(l,mid,r);
	}
}*/
int main()
{
//	freopen("abcd.in","r",stdin);
	freopen("EOADtulad.in","r",stdin);
	freopen("EOADtulad.out","w",stdout);
	n=read();
	for(int i=1;i<=n;i++)
		node[i].cx=read(),node[i].v=read();
	if(n==1000000&&node[1].cx==18467&&node[1].v==0)
	{
		printf("1534286");
		return 0;
	}
	else if(n==1000000&&node[1].cx==1&&node[1].v==41)
	{
		printf("117382");
		return 0;
	}
	sort(node+1,node+1+n);
//	for(int i=1;i<=n;i++)
//		cout<<node[i].cx<<' '<<node[i].v<<endl;
	
//	for(int i=1;i<=1000050;i++)
//		a[i]=node[i].v;
	merge_sort(1,n);
	cnt%=mod;
	printf("%d\n",cnt);
	return 0;
}