记录编号 |
326378 |
评测结果 |
AAAAAAATAT |
题目名称 |
为爱追寻 |
最终得分 |
80 |
用户昵称 |
gls1196 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
8.184 s |
提交时间 |
2016-10-21 07:37:48 |
内存使用 |
82.68 MiB |
显示代码纯文本
#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=3000009;
ll he[maxp+100],cnt;
struct Hash{
ll x,y,nx;
Hash(){;}
Hash(int _x,int _y,int _nx){
x=_x;y=_y;nx=_nx;
}
}h[maxp+200];
void Add(ll x,ll y){
ll p=((x*x+y*y)%maxp+maxp)%maxp;
h[++cnt]=Hash(x,y,he[p]);
he[p]=cnt;
}
bool Find(ll x,ll y){
ll p=((x*x+y*y)%maxp+maxp)%maxp;
for(int i=he[p];i;i=h[i].nx){
if(x==h[i].x&&y==h[i].y)return 1;
}
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);
Add(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++;
Add(sx,sy);
if(sx==tx&&sy==ty){
ok=1;break;
}
}
}
if(!ok)printf("SingleDogMZX");
else printf("%d",ans);
}