比赛 NOIP模拟赛by mzx Day1 评测结果 MMMMMMMMMM
题目名称 为爱追寻 最终得分 0
用户昵称 再见 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2016-10-19 21:56:34
显示代码纯文本
  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cctype>
  4.  
  5. const char str[]={"SingleDogMZX"};
  6.  
  7. inline long long read(){
  8. long long _x=0; char ch; bool flag=false;
  9. while(ch=getchar(),!isdigit(ch)) ch=='-'?flag=true:false;
  10. while(_x=_x*10+ch-'0',ch=getchar(),isdigit(ch));
  11. return flag?-_x:_x;
  12. }
  13.  
  14. int n,ans,findans=0;
  15. long long int x,y,xx,yy,dx,dy;
  16.  
  17. long long hash[20000000][3],MOD=10000007;
  18.  
  19.  
  20. int gethash(long long ax,long long ay){
  21. ax=(ax+MOD)%MOD; ay=(ay+MOD)%MOD;
  22. long long pp=(ax%10007)*59627+(ay%75627)*10007;
  23. int p=(pp+MOD)%MOD;
  24. if(p<0) p=(-p)%MOD;
  25. while(true){
  26. if(!hash[p][0]) break;
  27. if(hash[p][1]==ax&&hash[p][2]==ay) break;
  28. p=(p+1)%MOD;
  29. }
  30. if(hash[p][0]==0){
  31. hash[p][0]=1;
  32. hash[p][1]=ax;
  33. hash[p][2]=ay;
  34. return true;
  35. }
  36. else return false;
  37. }
  38.  
  39. int main()
  40. {
  41. //freopen("a.txt","r",stdin);
  42. freopen("loverfinding.in","r",stdin);
  43. freopen("loverfinding.out","w",stdout);
  44. scanf("%d",&n); x=read(); y=read(); xx=read(); yy=read();
  45. if(gethash(x,y)) ans++;
  46. for(int i=1;i<=n;i++){
  47. dx=read(); dy=read();
  48. x+=dx; y+=dy;
  49. if(x==xx&&y==yy){
  50. findans=true;
  51. break;
  52. }
  53. if(gethash(x,y)) ans++;
  54. }
  55. if(findans) printf("%d",ans+1);
  56. else printf("%s",str);
  57. return 0;
  58. }
  59.