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 m1=min(x1,x2);
  19. int m2=max(x1,x2);
  20. int n1=min(y1,y2);
  21. int n2=max(y1,y2);
  22. vector<int> t;
  23. for(int i=0;i<n;i++){
  24. if(i==a || i==b)continue;
  25. int z1=v[i].first,z2=v[i].second;
  26. cout<<z1<<" "<<z2<<endl;
  27. cout<<m1<<" "<<m2<<" "<<n1<<" "<<n2<<endl;
  28. if(z1>=m1 && z1<=m2 && z2>=n1 && z2<=n2 && i<=k){
  29. t.push_back(i);
  30. }
  31. }
  32. int d=0;
  33. int m=t.size();
  34. if(t.size()==0){
  35. if(a<=k && b<=k){
  36. cout<<0<<endl;
  37. }
  38. else{
  39. cout<<abs(x1-x2)+abs(y1-y2)<<endl;
  40. }
  41.  
  42. }
  43. else{
  44. int h1=v[t[0]].first,g1=v[t[0]].second;
  45. int h2=v[t[m-1]].first,g2=v[t[m-1]].second;
  46. cout<<h1<<" "<<g1<<h2<<g2<<endl;
  47. int d1=0,d2=0;
  48. if(a<=k && b>k){
  49. d1=(abs(x2-h2)+abs(y2-g2));
  50. d2=(abs(x2-h1)+abs(y2-g1));
  51. }
  52. else if(a>k && b<=k){
  53. d1=(abs(x1-h2)+abs(y1-g2));
  54. d2=(abs(x1-h1)+abs(y1-g1));
  55. }
  56. else if(a>k && b>k){
  57. d1=(abs(x1-h1)+abs(y1-g1))+(abs(x2-h2)+abs(y2-g2));
  58. d2=(abs(x1-h2)+abs(y1-g2))+(abs(x2-h1)+abs(y2-g1));
  59. }
  60. d+=min(d1,d2);
  61. cout<<d<<endl;
  62. }
  63.  
  64.  
  65. }
  66. signed main() {
  67. // your code goes here
  68. int t;
  69. cin>>t;
  70. while(t--){
  71. solve();
  72. }
  73. return 0;
  74. }
Success #stdin #stdout 0.01s 5296KB
stdin
1
4 3 2 4
0 0
-100 100
-1 -1
-1 0
stdout
0 0
-100 -1 0 100
-1 -1
-100 -1 0 100
199