提交时间:2021-05-22 13:41:25

运行 ID: 19749

#include<bits/stdc++.h> using namespace std; typedef long long ll; int a[102][102],n,m,s,maxn; void dfs(int t,int k ,int temp) { if(a[t][k]>=a[t-1][k]&&a[t][k]>=a[t+1][k]&&a[t][k]>=a[t][k+1]&&a[t][k]>=a[t][k-1]) { maxn=max(temp,maxn); return; } if(a[t][k]<a[t+1][k]) dfs(t+1,k,temp+a[t+1][k]); if(a[t][k]<a[t-1][k]) dfs(t-1,k,temp+a[t-1][k]); if(a[t][k]<a[t][k+1]) dfs(t,k+1,temp+a[t][k+1]); if(a[t][k]<a[t][k-1]) dfs(t,k-1,temp+a[t][k-1]); } int main() { cin>>n>>m>>s; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { s=s*345%19997; a[i][j]=s%10+1; } } for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) dfs(i,j,a[i][j]); } cout<<maxn<<endl; return 0; }