记录编号 326950 评测结果 AAAAAAAAAA
题目名称 为爱追寻 最终得分 100
用户昵称 Gravatardududu 是否通过 通过
代码语言 C++ 运行时间 7.391 s
提交时间 2016-10-21 17:56:44 内存使用 7.15 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. /*
  7. 第一行五个整数n,x0,y0,xt,yt,分别代表学姐移动的次数和学长桌子的坐标。
  8. 接下来n行,第i行两个整数dx,dy,代表学姐第i次移动沿与x/y轴平行的方向移动了dx/dy个单位。
  9. 如果dx/dy为负数,表示沿x/y轴的反方向移动了-dx/-dy个单位。
  10. */
  11. const int KN =1000010;
  12. int N,ans;
  13.  
  14. struct Point
  15. {
  16. int x,y;
  17. Point(){
  18. x=y=0;
  19. }
  20. void read(){
  21. scanf("%d%d",&x,&y);
  22. }
  23. bool operator <(const Point &tmp){
  24. return x<tmp.x;
  25. }
  26. bool operator >(const Point &tmp){
  27. return x>tmp.x;
  28. }
  29. bool operator ==(const Point &tmp){
  30. return (x==tmp.x&&y==tmp.y);
  31. }
  32. Point operator +(const Point &tmp){
  33. Point s;
  34. s.x=x+tmp.x;
  35. s.y=y+tmp.y;
  36. return s;
  37. }
  38. }pos[KN];
  39. Point tar,d;
  40. bool my_cmp(const Point &a,const Point &b)
  41. {
  42. if(a.x==b.x) return a.y<b.y;
  43. else return a.x<b.x;
  44. }
  45.  
  46. void work()
  47. {
  48. scanf("%d",&N);
  49. pos[0].read();
  50. tar.read();
  51. int i;
  52. for(i=1;i<=N;i++){
  53. d.read();
  54. pos[i]=pos[i-1]+d;
  55. if(pos[i]==tar) break;
  56. }
  57. if(i>N)
  58. {
  59. printf("SingleDogMZX");
  60. return;
  61. }
  62. sort(pos,pos+1+i,my_cmp);
  63. for(int j=0;j<=i;j++)
  64. if(!(pos[j]==pos[j+1]))
  65. ans++;
  66. printf("%d",ans);
  67. }
  68.  
  69. int main()
  70. {
  71. freopen("loverfinding.in","r",stdin);
  72. freopen("loverfinding.out","w",stdout);
  73. work();
  74. return 0;
  75. }