Advertisement
Hezov

Admitere P3 b)

Jun 23rd, 2025
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. int A[1001][1001];
  4. int f(int A[1001][1001], int n , int m, int L, int C)
  5. {
  6.     int di[] = {0,0,1,-1};
  7.     int dj[] = {1,-1,0,0};
  8.     int pVal = -1, val = A[L][C];
  9.     while(true)
  10.     {
  11.         int minDist = -1, poz = -1, minVal = -1;
  12.         for(int k = 0;k < 4;k++)
  13.         {
  14.             int new_L = L + di[k];
  15.             int new_C = C + dj[k];
  16.             if(new_L < 1 || new_C < 1 || new_L > n || new_C > m)
  17.                 continue;
  18.             int dif = abs(A[L][C] - A[new_L][new_C]);
  19.             if(minDist == -1 || dif < minDist )
  20.             {
  21.                 poz = k;
  22.                 minDist = dif;
  23.                 minVal = A[new_L][new_C];
  24.             }
  25.             else if(minDist == dif && minVal > A[new_L][new_C])
  26.             {
  27.                 poz = k;
  28.                 minVal = A[new_L][new_C];
  29.             }
  30.         }
  31.         if(pVal == minVal)
  32.             return min(minVal, val);
  33.         pVal = val;
  34.         val = minVal;
  35.         L += di[poz];
  36.         C += dj[poz];
  37.     }
  38. }
  39. int main()
  40. {
  41.     int n , m, L, C ;
  42.     cin >> n >> m >> L >> C;
  43.     for(int i = 1;i<=n;i++)
  44.         for(int j = 1;j<=m;j++)
  45.             cin >> A[i][j];
  46.     cout << f(A,n,m,L,C);
  47.     return 0;
  48. }
  49. /*
  50. 4 5
  51. 2 4
  52. 57 51 70 72 75
  53. 56 58 60 66 77
  54. 59 54 93 90 76
  55. 88 52 61 79 68
  56. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement