比赛 |
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);
}