fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ff first
  4. #define ss second
  5. using namespace std;
  6. #define INF 1000000000
  7. ll a,b,c,d,n;
  8. multiset<pair<pair<ll,ll>,pair<ll,ll>>>s1,s2;
  9.  
  10.  
  11. int main()
  12. {
  13. ios_base::sync_with_stdio(0);cin.tie(0);
  14. cin>>n;
  15. for(int i=0;i<n;i++){
  16. cin>>a>>b>>c>>d;
  17. s1.insert({{a,b},{c,d}});
  18. s1.insert({{c,d},{a,b}});
  19. s2.insert({{b,a},{d,c}});
  20. s2.insert({{d,c},{b,a}});
  21. }
  22. cout<<2*((*--s1.end()).first.first-(*s1.begin()).first.first+(*--s2.end()).first.first-(*s2.begin()).first.first)<<"\n";
  23. ll bst=(ll)INF*(ll)INF;
  24. if(n>1){
  25. auto pom=*--s2.end();
  26.  
  27. pom={{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}};
  28. // cout<<pom.ff.ff<<" "<<pom.ff.ss<<" "<<pom.ss.ff<<" "<<pom.ss.ss<<"\n";
  29. pom={pom.ss,pom.ff};
  30. // cout<<pom.ff.ff<<" "<<pom.ff.ss<<" "<<pom.ss.ff<<" "<<pom.ss.ss<<"\n";
  31. s1.erase(s1.lower_bound({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}}));
  32. s1.erase(s1.lower_bound({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}}));
  33. s2.erase(s2.lower_bound({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}}));
  34. s2.erase(s2.lower_bound({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}}));
  35. bst=min(bst,2*((*--s1.end()).first.first-(*s1.begin()).first.first+(*--s2.end()).first.first-(*s2.begin()).first.first));
  36. s1.insert({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}});
  37. s1.insert({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}});
  38. s2.insert({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}});
  39. s2.insert({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}});
  40. pom=*s1.begin();
  41. for(auto i=s1.begin();i!=s1.end();i++){
  42. // cout<<(*i).ff.ff<<" "<<(*i).ff.ss<<" "<<(*i).ss.ff<<" "<<(*i).ss.ss<<"\n";
  43. }
  44. s1.erase(s1.lower_bound({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}}));//cout<<s1.size();//return 0;
  45. s1.erase(s1.lower_bound({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}}));//return 0;
  46. s2.erase(s2.lower_bound({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}}));
  47. s2.erase(s2.lower_bound({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}}));
  48. bst=min(bst,2*((*--s1.end()).first.first-(*s1.begin()).first.first+(*--s2.end()).first.first-(*s2.begin()).first.first));
  49. s1.insert({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}});
  50. s1.insert({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}});
  51. s2.insert({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}});
  52. s2.insert({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}});
  53. pom=*--s1.end();//return 0;
  54. pom={pom.ss,pom.ff};
  55. s1.erase(s1.lower_bound({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}}));
  56. s1.erase(s1.lower_bound({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}}));
  57. s2.erase(s2.lower_bound({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}}));
  58. s2.erase(s2.lower_bound({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}}));
  59. bst=min(bst,2*((*--s1.end()).first.first-(*s1.begin()).first.first+(*--s2.end()).first.first-(*s2.begin()).first.first));
  60. s1.insert({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}});
  61. s1.insert({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}});
  62. s2.insert({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}});
  63. s2.insert({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}});
  64. pom=*s2.begin();
  65. pom={{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}};
  66. s1.erase(s1.lower_bound({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}}));
  67. s1.erase(s1.lower_bound({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}}));
  68. s2.erase(s2.lower_bound({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}}));
  69. s2.erase(s2.lower_bound({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}}));
  70. bst=min(bst,2*((*--s1.end()).first.first-(*s1.begin()).first.first+(*--s2.end()).first.first-(*s2.begin()).first.first));
  71. s1.insert({{pom.ff.ff,pom.ff.ss},{pom.ss.ff,pom.ss.ss}});
  72. s1.insert({{pom.ss.ff,pom.ss.ss},{pom.ff.ff,pom.ff.ss}});
  73. s2.insert({{pom.ff.ss,pom.ff.ff},{pom.ss.ss,pom.ss.ff}});
  74. s2.insert({{pom.ss.ss,pom.ss.ff},{pom.ff.ss,pom.ff.ff}});
  75. cout<<bst;}
  76. else
  77. cout<<0;
  78. return 0;
  79. }
  80.  
Success #stdin #stdout 0.01s 5284KB
stdin
2
-2 4 6 6
-1000 -1000 500 250
stdout
5500
20