fork download
  1. #include <iostream>
  2. #include <utility>
  3. using namespace std;
  4.  
  5. int max(int a, int b){
  6. return (a > b) ? a : b;
  7. }
  8. int min(int a, int b){
  9. return (a < b) ? a : b;
  10. }
  11. int distance(int x_1, int y_1,int x_2, int y_2){
  12. return max(abs(x_1-x_2), abs(y_1-y_2));
  13. }
  14. int main() {
  15. int n;
  16. cin >> n;
  17. int X[200000], Y[200000];
  18. for(int i = 0; i < n; i++){
  19. cin >> X[i] >> Y[i];
  20. }
  21. int upX = X[0], upY = Y[0];
  22. int downX = X[0], downY = Y[0];
  23. int leftX = X[0], leftY = Y[0];
  24. int rightX = X[0], rightY = Y[0];
  25. for(int i = 1; i < n; i++){
  26. if(Y[i] > upY){
  27. upX = X[i];
  28. upY = Y[i];
  29. }
  30. if(Y[i] < downY){
  31. downX = X[i];
  32. downY = Y[i];
  33. }
  34. if(X[i] < leftX){
  35. leftX = X[i];
  36. leftY = Y[i];
  37. }
  38. if(X[i] > rightX){
  39. rightX = X[i];
  40. rightY = Y[i];
  41. }
  42. }
  43. int D_MAX[200000];
  44. int min_max = 1000000000;
  45. int place;
  46. for (int i = 0; i < n; i++){
  47. D_MAX[i] = max(max(distance(X[i],Y[i],upX,upY), distance(X[i],Y[i],downX,downY)),
  48. max(distance(X[i],Y[i],rightX,rightY), distance(X[i],Y[i],leftX,leftY)));
  49. if (D_MAX[i]<min_max){
  50. place = i+1;
  51. min_max = D_MAX[i];
  52. }
  53. }
  54. cout << place;
  55. return 0;
  56. }
Success #stdin #stdout 0.01s 5280KB
stdin
4
1 10
10 10
10 1
1 1
stdout
1