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 x1=v[a].first,y1=v[a].second;
  17. int x2=v[b].first,y2=v[b].second;
  18. int d=abs(x1-x2)+abs(y1-y2);
  19.  
  20. if(k<0){
  21. cout<<d<<endl;
  22. return ;
  23. }
  24. if(a>k && b<=k){
  25. for(int i=0;i<=k;i++){
  26. d=min(d,abs(x1-v[i].first)+abs(y1-v[i].second));
  27. }
  28. }
  29. if(a<=k && b>k){
  30. for(int i=0;i<=k;i++){
  31. d=min(d,abs(x2-v[i].first)+abs(y2-v[i].second));
  32. }
  33. }
  34. if(a>k && b>k){
  35. int d1=1e12;
  36. for(int i=0;i<=k;i++){
  37. d1=min(d1,abs(x1-v[i].first)+abs(y1-v[i].second));
  38. }
  39. int d2=1e12;
  40. for(int i=0;i<=k;i++){
  41. d2=min(d2,abs(x2-v[i].first)+abs(y2-v[i].second));
  42. }
  43. d=min(d,d1+d2);
  44. }
  45. else if(a<=k && b<=k){
  46. cout<<0<<endl;
  47. return;
  48.  
  49. }
  50.  
  51. cout<<d<<endl;
  52.  
  53.  
  54.  
  55.  
  56. }
  57. signed main() {
  58. // your code goes here
  59. int t;
  60. cin>>t;
  61. while(t--){
  62. solve();
  63. }
  64. return 0;
  65. }
Success #stdin #stdout 0.01s 5288KB
stdin
5
6 2 3 5
0 0
1 -2
-2 1
-1 3
2 -2
-3 -3
2 0 1 2
-1000000000 -1000000000
1000000000 1000000000
7 5 4 2
154 147
-154 -147
123 456
20 23
43 20
998 244
353 100
3 1 3 1
0 10
1 20
2 30
4 3 2 4
0 0
-100 100
-1 -1
-1 0
stdout
4
4000000000
0
22
1