Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include<ext/pb_ds/assoc_container.hpp>
  3. using namespace __gnu_pbds;
  4. using namespace std;
  5. typedef long long ll;
  6. typedef long double ld;
  7. #define pb push_back
  8. #define X first
  9. #define Y second
  10. #define sz(v) (int)v.size()
  11. using ord = tree<int, null_type, greater<int>, rb_tree_tag, tree_order_statistics_node_update>;
  12.  
  13. void solve();
  14.  
  15. main() {
  16. ios_base::sync_with_stdio(0), cin.tie(0);
  17. #ifdef ONPC
  18. freopen("in.txt", "r", stdin);
  19. #endif
  20. int t = 1;
  21. cin >> t;
  22. while (t--) solve();
  23. return 0;
  24. }
  25.  
  26.  
  27.  
  28. void solve() {
  29. ll l1, r1, l2, r2, s1, d1, s2, d2;
  30. cin >> l1 >> r1 >> l2 >> r2 >> s1 >> d1 >> s2 >> d2;
  31. ll end1 = s1 + d1;
  32. pair<ll, pair<ll, ll>> ans = {1e18, {1e18, 1e18}};
  33. ll can = max((ll)0, min(s1 - l1, end1 - s2));
  34. ll ss = can;
  35. ll start1 = s1;
  36. ll end2 = s2 + d2;
  37. ll start2 = s2;
  38. start1 -= can;
  39. end1 -= can;
  40. can = max((ll)0, min(r2 - end2, end1 - start2));
  41. ss += can;
  42. start2 += can;
  43. end2 += can;
  44. if (end1 <= start2) ans = min(ans, {ss, {start1, start2}});
  45.  
  46. ss = 0;
  47. start1 = s1, end1 = s1 + d1, start2 = s2, end2 = s2 + d2;
  48. can = max((ll)0, min(s2 - l2, end2 - start1));
  49. ss += can;
  50. start2 -= can;
  51. end2 -= can;
  52. can = max((ll)0, min(r1 - end1, end2 - start1));
  53. ss += can;
  54. start1 += can;
  55. end1 += can;
  56. if (end2 <= start1) ans = min(ans, {ss, {start1, start2}});
  57. if (ans.X != 1e18) cout << ans.Y.X << ' ' << ans.Y.Y << '\n';
  58. else cout << -1 << ' ' << -1 << '\n';
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement