fork(6) download
  1. #include <stdio.h>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5. /// POTRZEBNE FUNKCJE
  6. long long int minimum(long long int a, long long int b);
  7. long long int maximum(long long int a, long long int b);
  8. long long int absval(long long int a);
  9. void quick_sort(long long int tab[], long long int tab2[], int lewy, int prawy);
  10. /// POTRZEBNE ZMIENNE
  11. int n;
  12. long long int mx=2e9,my=2e9;
  13. long long int dist;
  14. int main()
  15. {
  16. scanf("%d", &n);
  17. long long int x[n],y[n];
  18. /// WCZYTYWANIE WSPOLRZEDNYCH I ZAMIANA NA METRYKE MAX
  19. for(int i=0; i<n; i++)
  20. {
  21. scanf("%lld", &x[i]);
  22. scanf("%lld", &y[i]);
  23. x[i]=x[i]-y[i];
  24. y[i]=x[i]+2*y[i];
  25. }
  26. quick_sort(x,y,0,n-1);
  27. for(int i=0;i<n-1;i++)
  28. {
  29. dist=maximum(absval(x[i]-x[i+1]),absval(y[i]-y[i+1]));
  30. if(dist<mx)
  31. {
  32. mx=dist;
  33. }
  34. }
  35. quick_sort(y,x,0,n-1);
  36.  
  37. for(int i=0;i<n-1;i++)
  38. {
  39. dist=maximum(absval(x[i]-x[i+1]),absval(y[i]-y[i+1]));
  40. if(dist<my)
  41. {
  42. my=dist;
  43. }
  44.  
  45. }
  46. dist=minimum(mx,my);
  47. printf("%lld",dist);
  48.  
  49. return 0;
  50. }
  51.  
  52. long long int minimum(long long int a, long long int b)
  53. {
  54. if(a<b)
  55. {
  56. return a;
  57. }
  58. else
  59. {
  60. return b;
  61. }
  62. }
  63.  
  64. long long int maximum(long long int a, long long int b)
  65. {
  66. if(a>b)
  67. {
  68. return a;
  69. }
  70. else
  71. {
  72. return b;
  73. }
  74. }
  75.  
  76. long long int absval(long long int a)
  77. {
  78. if(a<0)
  79. {
  80. return -a;
  81. }
  82. else
  83. {
  84. return a;
  85. }
  86. }
  87.  
  88. void quick_sort(long long int tab[], long long int tab2[], int lewy, int prawy) // sortowanie rosnace
  89. {
  90. if(prawy <= lewy)
  91. {
  92. return;
  93. }
  94. else
  95. {
  96. int i = lewy-1, j = prawy+1, pivot = tab[(lewy+prawy)/2];
  97.  
  98. while(1)
  99. {
  100. while(pivot>tab[++i]);
  101. while(pivot<tab[--j]);
  102. if( i <= j)
  103. {
  104. swap(tab[i],tab[j]);
  105. swap(tab2[i],tab2[j]);
  106. }
  107. else
  108. {
  109. break;
  110. }
  111.  
  112. }
  113.  
  114. if(j > lewy)
  115. {
  116. quick_sort(tab,tab2, lewy, j);
  117. }
  118.  
  119. if(i < prawy)
  120. {
  121. quick_sort(tab,tab2, i, prawy);
  122. }
  123. }
  124. }
  125.  
Success #stdin #stdout 0s 3472KB
stdin
5
5 0
-5 10
-10 15
0 5
-15 20
stdout
10