Advertisement
YEZAELP

SMMR-101: POL

Jul 31st, 2021
1,167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 1e3 + 10;
  5. int ar[N][N];
  6. int dp[N][N];
  7. int di[] = {0, 0, 1, -1}, dj[] = {1, -1, 0, 0};
  8. int n, m;
  9.  
  10. bool pst(int i, int j){
  11.     return 1 <= i and i <= n and 1 <= j and j <= m;
  12. }
  13.  
  14. int dfs(int ui, int uj){
  15.     if(dp[ui][uj] != 0) return dp[ui][uj];
  16.     for(int d=0;d<4;d++){
  17.         int vi = ui + di[d];
  18.         int vj = uj + dj[d];
  19.         if(pst(vi, vj) and ar[vi][vj] == ar[ui][uj] - 1)
  20.             return dp[ui][uj] = 1 + dfs(vi, vj);
  21.     }
  22.     return dp[ui][uj] = 1;
  23. }
  24.  
  25. int main(){
  26.  
  27.     scanf("%d%d", &n, &m);
  28.  
  29.     for(int i=1;i<=n;i++){
  30.         for(int j=1;j<=m;j++){
  31.             scanf("%d", &ar[i][j]);
  32.         }
  33.     }
  34.  
  35.     int mx = 1;
  36.     for(int i=1;i<=n;i++){
  37.         for(int j=1;j<=m;j++){
  38.             if(dp[i][j] == 0)
  39.                 mx = max(mx, dfs(i, j));
  40.         }
  41.     }
  42.  
  43.     printf("%d", mx);
  44.  
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement