比赛 NOIP模拟赛by mzx Day1 评测结果 AAATTATAAT
题目名称 为爱追寻 最终得分 60
用户昵称 gls1196 运行时间 7.984 s
代码语言 C++ 内存使用 76.61 MiB
提交时间 2016-10-19 19:25:57
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<queue>
using namespace std;
typedef long long ll;
const ll maxp=20000009;
class Hash{
	public:ll x,y;
		Hash *nx;
		Hash(){
			nx=NULL;x=y=0LL;
		}
}*h[maxp+10];
void Insert(ll x,ll y){
	ll ax=abs(x),ay=abs(y);
	ll key=(ax*ax+ay*ay+maxp)%maxp+1;
	if(!h[key]){
		Hash *tmp=new Hash;
		tmp->x=x;
		tmp->y=y;
		h[key]=tmp;
	}
	else {
		Hash *tmp=h[key];
		while(tmp->nx)tmp=tmp->nx;
		tmp->nx=new Hash;
		tmp->nx->x=x;
		tmp->nx->y=y;
	}
}
bool Find(int x,int y){
	ll ax=abs(x),ay=abs(y);
	ll key=(ax*ax+ay*ay+maxp)%maxp+1;
	if(!h[key])return 0;
	else {
		Hash *tmp=h[key];
		while(tmp){
			if(tmp->x==x&&tmp->y==y)return 1;
			tmp=tmp->nx;
		}
	}
	return 0;
}
int main(){
	freopen("loverfinding.in","r",stdin);	
	freopen("loverfinding.out","w",stdout);
	ll n,sx,sy,tx,ty,dx,dy;int ans=1;
	scanf("%lld%lld%lld%lld%lld",&n,&sx,&sy,&tx,&ty);
	Insert(sx,sy);bool ok=0;
	if(sx==tx&&sy==ty){
		printf("1");return 0;
	}
	else {
		while(n--){
			scanf("%lld%lld",&dx,&dy);
			sx+=dx,sy+=dy;
			if(!Find(sx,sy))ans++;
			Insert(sx,sy);	
			if(sx==tx&&sy==ty){
				ok=1;break;
			}
		}
	}
	if(!ok)printf("SingleDogMZX");
	else printf("%d",ans);
}