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
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
using namespace std;
int abs(int x){return x < 0 ? -x : x;}
int distanta_manhattan(int x1, int y1, int x2, int y2){
return abs(x1-x2) + abs(y1-y2);
}
int main(){
int n,m,x,y;
cin >> x >> y >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++)
cout << (distanta_manhattan(x,y,i,j)+1) << ' ';
cout << '\n';
}
return 0;
}
anamariaany45p9ya3w:
Nu ai respectat enuntul
using namespace std;
int abs(int x){return x < 0 ? -x : x;}
int distanta_manhattan(int x1, int y1, int x2, int y2){
return abs(x1-x2) + abs(y1-y2);
}
int max(int a, int b){
return a > b ? a : b;
}
int main(){
int n,m,x,y;
cin >> x >> y >> n >> m;
cout << 1+max(max(distanta_manhattan(1,1,x,y), distanta_manhattan(n, 1, x, y)), max(distanta_manhattan(1,m,x,y), distanta_manhattan(n, m, x, y)));
return 0;
}
Alte întrebări interesante
Religie,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
9 ani în urmă