Va rog mult problema 4183 de pe pbinfo. Nu ma lasa sa dau copy paste, nu stiu de ce, va rog sa o cautati pe net si daca stiti cum se rezolva sa ma ajutati va rog mult.
Obs: daca stai sa analizezi problema, vei observa ca de fapt rezolvarea este una foarte simpla. Trebuie doar sa luam in parte fiecare element (parcela) si sa verificam daca este mai mic decat toti vecinii sai, daca da atunci la suma se va adauga cat mai trebuie de completat pana la elementul curent (mini - a[i][j]). Iar dupa ce ai gasit un asemenea caz sa actualizezi acel element cu minimul respectiv gasit.
Verified answer
Salut!
Ai rezolvarea in C++ mai jos
#include <iostream>
using namespace std;
int main()
{
int n, m, a[101][101], s = 0;
cin >> n >> m;
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= m; ++j)
{
cin >> a[i][j];
}
}
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= m; ++j)
{
int mini = 11;
if (a[i+1][j] < mini && i+1 <= n)
{
mini = a[i+1][j];
}
if (a[i][j+1] < mini && j+1 <= m)
{
mini = a[i][j+1];
}
if (a[i-1][j] < mini && i-1 >= 1)
{
mini = a[i-1][j];
}
if (a[i][j-1] < mini && j-1 >= 1)
{
mini = a[i][j-1];
}
if (mini > a[i][j])
{
s += mini - a[i][j];
a[i][j] = mini;
}
}
}
cout << s;
return 0;
}