Submission #1319134

#TimeUsernameProblemLanguageResultExecution timeMemory
1319134MuhammadSaramMaxcomp (info1cup18_maxcomp)C++20
100 / 100
295 ms20072 KiB
#include <bits/stdc++.h> using namespace std; const int M = 1e3 + 6; int pre[M][M][4], a[M][M]; int main() { int n,m; cin>>n>>m; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin>>a[i][j]; for (int i=0;i<=n+1;i++) for (int j=0;j<=m+1;j++) for (int k=0;k<4;k++) pre[i][j][k]=-15e8; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) { pre[i][j][0]=max(pre[i-1][j][0],pre[i][j-1][0]); pre[i][j][0]=max(pre[i][j][0],-a[i][j]+i+j); } for (int i=1;i<=n;i++) for (int j=m;j>=1;j--) { pre[i][j][1]=max(pre[i-1][j][1],pre[i][j+1][1]); pre[i][j][1]=max(pre[i][j][1],-a[i][j]+i-j); } for (int i=n;i>=1;i--) for (int j=1;j<=m;j++) { pre[i][j][2]=max(pre[i+1][j][2],pre[i][j-1][2]); pre[i][j][2]=max(pre[i][j][2],-a[i][j]-i+j); } for (int i=n;i>=1;i--) for (int j=m;j>=1;j--) { pre[i][j][3]=max(pre[i+1][j][3],pre[i][j+1][3]); pre[i][j][3]=max(pre[i][j][3],-a[i][j]-i-j); } int ans=-1; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) ans=max(ans,a[i][j]+max(pre[i][j][0]-i-j,pre[i][j][1]-i+j)-1),ans=max(ans,a[i][j]+max(pre[i][j][2]+i-j,pre[i][j][3]+i+j)-1); cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...