Бізнес справи#12238

Бізнес справи (Розбір)

Автор задачі:

Андрій Холод (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;

}