Se consideră o pădure ce conține n•m
copaci aranjați pe n
linii și m
coloane în care s-a produs un incendiu. Pădurarii cunosc coordonatele x
și y
ale copacului de la care a izbucnit focul și modalitatea prin care acesta se extinde. Astfel, dacă un copac se aprinde într-o anumită zi, în ziua următoare se vor aprind copacii vecini cu acesta pe linie sau coloană care nu sunt încă afectați de incendiu.
Cerința
Știind x
și y
, coordonatele inițiale ale focului și n
și m
, dimensiunile pădurii, ajutați pădurarii să determine numărul minim de zile după care întreaga pădure va fi afectată.
Date de intrare
Programul citește de la tastatură numerele x y n m
, cu semnificația de mai sus.
Date de ieșire
Programul va afișa pe ecran numărul Z
, reprezentând numărul de zile după care va fi afectată întreaga pădure.
Restricții și precizări
1 ≤ x ≤ n ≤ 1.000.000.000
1 ≤ y ≤ m ≤ 1.000.000.000
Exemplu 1:
Intrare
2 2 4 5
Ieșire
6
Explicație
În funcție de numărul de zile, fiecare zonă va fi distrusă în numărul de zile corespunzător figurii de mai jos:
3 2 3 4 5 2 1 2 3 4 3 2 3 4 5 4 3 4 5 6
Exemplu 2:
Intrare
3 3 9 9
Ieșire
13
Explicație
În funcție de numărul de zile, fiecare zonă va fi distrusă în numărul de zile corespunzător figurii de mai jos:
5 4 3 4 5 6 7 8 9 4 3 2 3 4 5 6 7 8 3 2 1 2 3 4 5 6 7 4 3 2 3 4 5 6 7 8 5 4 3 4 5 6 7 8 9 6 5 4 5 6 7 8 9 10 7 6 5 6 7 8 9 10 11 8 7 6 7 8 9 10 11 12 9 8 7 8 9 10 11 12 13
#include <bits/stdc++.h> using namespace std; int main() { int x , y , n , m; cin >> x >> y >> n >> m; int lc1 = x + y - 2; int lc2 = x - 1 + m - y; int lc3 = y - 1 + n - x; int lc4 = m - y + n - x; cout << max(max(max(lc1 , lc2) , lc3) , lc4) + 1; return 0; }