记录编号 432798 评测结果 AAAAAAAAAA
题目名称 [HNOI 2004] 宠物收养所 最终得分 100
用户昵称 GravatarHzoi_QTY 是否通过 通过
代码语言 C++ 运行时间 0.030 s
提交时间 2017-08-03 20:11:10 内存使用 0.26 MiB
显示代码纯文本
#include<cstdio>  
#include<cstring>  
#include<set>
#include<iostream>
#include<cmath>
#define inf 1000000000
using namespace std;
set<int> st;
int n,m,ans,mod=1000000;
inline int read()
{
	int sum=0,f=1;char x=getchar();
	while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();}
	while(x>='0'&&x<='9'){sum=sum*10+x-'0';x=getchar();}
	return sum*f;
}
int yjn()
{
	freopen("pet.in","r",stdin);
    freopen("pet.out","w",stdout);
	n=read();
	int x,y;
	for(int i=1;i<=n;i++)
	{   
		x=read();y=read();
		
		if(st.empty())
		{st.insert(y);
			m=x;continue;
		}
		if(m!=x)
		{
			int a=inf,b=inf;
			set<int>::iterator it=st.lower_bound(y);
			set<int>::iterator it2=it;
			if(it!=st.begin())it--;
			if(it2==st.end())it2--;
			a=abs(y-*it);b=abs(*it2-y);
			if(a<=b){ans=(ans+a)%mod;st.erase(*it);}
			else    {ans=(ans+b)%mod;st.erase(*it2);}
		}
		else
		    st.insert(y);
	}
	printf("%d\n",ans);
}
int qty=yjn();
int main(){;}