记录编号 |
321915 |
评测结果 |
AAAAAAAAAA |
题目名称 |
罗伊德的防晒霜 |
最终得分 |
100 |
用户昵称 |
kxxy |
是否通过 |
通过 |
代码语言 |
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;
}