Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define int long long
- #define x first
- #define y second
- #define mp make_pair
- #define pb push_back
- #define all(v) v.begin(), v.end()
- #define sz(v) (int) v.size()
- #define TASK ""
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef pair<int, int> pii;
- const int INF = 2e9;
- int l1, r1, l2, r2;
- int s1, d1, s2, d2;
- int check(int c1, int c2) {
- if (c1 >= l1 && c1 + d1 <= r1 && c2 >= l2 && c2 + d2 <= r2 && max(c1, c2) >= min(c1 + d1, c2 + d2)) {
- return abs(c1 - s1) + abs(c2 - s2);
- }
- return INF;
- }
- void solve() {
- cin >> l1 >> r1 >> l2 >> r2;
- cin >> s1 >> d1 >> s2 >> d2;
- int c1 = -1, c2 = -1, ans = INF;
- for (int L1 : {l2 - d1, r2 - d2 - d1, s2 - d1, l2 + d1, r2 - d2 + d1, s2 + d1, l1, s1, r1 - d1}) {
- for (int L2 : {l2, r2 - d2, s2, L1 - d2, L1 + d1}) {
- int curr = check(L1, L2);
- if (curr < ans) {
- c1 = L1;
- c2 = L2;
- ans = curr;
- }
- }
- }
- for (int L2 : {l1 - d2, r1 - d1 - d2, s1 - d2, l1 + d2, r1 - d1 + d2, s1 + d2, l2, s2, r2 - d2}) {
- for (int L1 : {l1, r1 - d1, s1, L2 - d1, L2 + d2}) {
- int curr = check(L1, L2);
- if (curr < ans) {
- c1 = L1;
- c2 = L2;
- ans = curr;
- }
- }
- }
- cout << c1 << " " << c2 << "\n";
- }
- signed main() {
- #ifdef LOCAL
- freopen("input.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- #else
- if (strlen(TASK) > 0)
- freopen(TASK".in", "r", stdin),
- freopen(TASK".out", "w", stdout);
- #endif
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int T;
- cin >> T;
- while (T--) {
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement