fork download
  1. #include<iostream>
  2. #include<map>
  3. using namespace std;
  4.  
  5. typedef long ll;
  6.  
  7. map<pair<ll,ll>,bool> exist;
  8.  
  9. int main()
  10. {
  11. int n;
  12. cin>>n;
  13. ll a[n+1][2];
  14. int i;
  15. for(i=0;i<n;i++)
  16. {
  17. cin>>a[i][0]>>a[i][1];
  18. exist[make_pair(a[i][0],a[i][1])]=1;
  19. }
  20.  
  21. if(n==0)
  22. cout<<"4"<<endl;
  23. else if(n==1)
  24. cout<<"3"<<endl;
  25. else if(n==2)
  26. cout<<"2"<<endl;
  27. else
  28. {
  29. int j,x1,x2,x3,x4,y1,y2,y3,y4;
  30. int cnt=0;
  31. for(i=0;i<n;i++)
  32. {
  33. x1=a[i][0];
  34. y1=a[i][1];
  35. int p=0,q=0,f=0;
  36. for(j=i+1;j<n;j++)
  37. {
  38. x2=a[j][0];
  39. y2=a[j][1];
  40.  
  41. //clockwise rotation
  42. x3=x1-(y2-y1);
  43. y3=y1+(x2-x1);
  44.  
  45. x4=x2- (y2-y1);
  46. y4=y2+(x2-x1);
  47.  
  48. if(exist[make_pair(x3,y3)])
  49. p=1;
  50.  
  51. if(exist[make_pair(x4,y4)])
  52. q=1;
  53.  
  54. if(p&&q)
  55. {
  56. cnt=0;
  57. f=1;
  58. break;
  59. }
  60. else if(p||q)
  61. cnt=1;
  62. else cnt=2;
  63.  
  64. // anticlockwise rotation
  65. x3=x1+(y2-y1);
  66. y3=y1+(x1-x2);
  67.  
  68. x4=x2+(y2-y1);
  69. y4=y2+(x1-x2);
  70.  
  71. if(exist[make_pair(x3,y3)])
  72. p=1;
  73.  
  74. if(exist[make_pair(x4,y4)])
  75. q=1;
  76.  
  77. if(p&&q)
  78. {
  79. cnt=0;
  80. f=1;
  81. break;
  82. }
  83. else if(p||q)
  84. cnt=1;
  85.  
  86. else cnt=2;
  87. }
  88.  
  89. if(f)
  90. break;
  91. }
  92. cout<<cnt<<endl;
  93. }
  94. return 0;
  95. }
  96.  
Success #stdin #stdout 0s 3436KB
stdin
10
1 2
2 5
-10000 4599
-1000000 1000000
4 7
30002 56009
2 95869
-998 93495
9888 222222
1344 454356
stdout
2