Автор задачі: | Андрій Холод (Connect) |
Підготував: | Андрій Холод (Connect) |
Аналіз: | Андрій Холод (Connect) |
Розв’язання
Розглянемо два випадки. Перший випадок — коли ми спочатку відвідуємо перший офіс, а потім другий офіс. Другий випадок — коли ми спочатку відвідуємо другий офіс, а потім перший. Далі нам потрібно лише перевірити, чи можемо ми виконати наші завдання в кожному офісі в кожному з цих двох сценаріїв.
Асимптотична складність розв’язання становить O(1).
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define speed ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define endl '\n'
#define yes cout<<"1"<<endl
#define no cout<<"0"<<endl
void solve() {
ll r1 , r2 , r3;
cin>>r1>>r2>>r3;
ll q1 , q2 , t1;
cin>>q1>>q2>>t1;
ll w1 , w2 , t2;
cin>>w1>>w2>>t2;
bool ok = 0;
// перший офіс буде першим
ll road = min(r1 , r2+r3);
if (max(road , q1) + t1 <= q2 && max(max(road , q1) + t1 + min(r3 , r1+r2) , w1) + t2 <= w2 ) ok = 1;
// другий офіс буде першим
road = min(r2 , r1+r3);
if (max(road , w1) + t2 <= w2 && max(max(road , w1) + t2 + min(r3 , r1+r2) , q1) + t1 <= q2 ) ok = 1;
if (ok) yes;
else no;
}
signed main() {
speed;
int test;
test=1;
cin>>test;
for (int tt=1 ;tt<=test ; tt++) {
solve();
}
return 0;
}