Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e3 + 10;
- int ar[N][N];
- int dp[N][N];
- int di[] = {0, 0, 1, -1}, dj[] = {1, -1, 0, 0};
- int n, m;
- bool pst(int i, int j){
- return 1 <= i and i <= n and 1 <= j and j <= m;
- }
- int dfs(int ui, int uj){
- if(dp[ui][uj] != 0) return dp[ui][uj];
- for(int d=0;d<4;d++){
- int vi = ui + di[d];
- int vj = uj + dj[d];
- if(pst(vi, vj) and ar[vi][vj] == ar[ui][uj] - 1)
- return dp[ui][uj] = 1 + dfs(vi, vj);
- }
- return dp[ui][uj] = 1;
- }
- int main(){
- scanf("%d%d", &n, &m);
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- scanf("%d", &ar[i][j]);
- }
- }
- int mx = 1;
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- if(dp[i][j] == 0)
- mx = max(mx, dfs(i, j));
- }
- }
- printf("%d", mx);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement