fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. void solve(){
  6. int n,k,a,b;
  7. cin>>n>>k>>a>>b;
  8. --k;
  9. --a,--b;
  10. vector<pair<int,int>> v(n);
  11. for(int i=0;i<n;i++){
  12. int x,y;
  13. cin>>x>>y;
  14. v[i]={x,y};
  15. }
  16. int d=1e9;
  17. int x1=v[a].first,y1=v[a].second;
  18. int x2=v[b].first,y2=v[b].second;
  19. if(k<0){
  20. cout<<abs(x1-x2)+abs(y1-y2)<<endl;
  21. return ;
  22. }
  23. if(a>k && b<=k){
  24. for(int i=0;i<=k;i++){
  25. d=min(d,abs(x1-v[i].first)+abs(y1-v[i].second));
  26. }
  27. }
  28. if(a<=k && b>k){
  29. for(int i=0;i<=k;i++){
  30. d=min(d,abs(x2-v[i].first)+abs(y2-v[i].second));
  31. }
  32. }
  33. if(a>k && b>k){
  34. for(int i=0;i<=k;i++){
  35. d=min(d,abs(x1-v[i].first)+abs(y1-v[i].second));
  36. }
  37. int d2=INT_MAX;
  38. for(int i=0;i<=k;i++){
  39. d2=min(d2,abs(x2-v[i].first)+abs(y2-v[i].second));
  40. }
  41. d+=d2;
  42. }
  43. if(d==1e9){
  44. cout<<0<<endl;
  45. }
  46. else{
  47. cout<<d<<endl;
  48. }
  49.  
  50.  
  51.  
  52. }
  53. signed main() {
  54. // your code goes here
  55. int t;
  56. cin>>t;
  57. while(t--){
  58. solve();
  59. }
  60. return 0;
  61. }
Success #stdin #stdout 0.01s 5292KB
stdin
1
11 6 8 10
-11 76
-1 -63
-5 -75
58 75
68 21
87 65
-32 63
66 -31
-53 84
88 -7
84 -73
stdout
102