Submission #96448

#TimeUsernameProblemLanguageResultExecution timeMemory
96448KLPPMaxcomp (info1cup18_maxcomp)C++14
100 / 100
459 ms32376 KiB
#include<bits/stdc++.h> using namespace std; typedef long long int lld; lld B[1000][1000]; lld minB[1000][1000]; int n,m; lld abs(lld a){ if(a>0)return a; return -a; } lld solve(){ lld ans=-1; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ minB[i][j]=B[i][j]; if(i>0)minB[i][j]=min(minB[i][j],minB[i-1][j]); if(j>0)minB[i][j]=min(minB[i][j],minB[i][j-1]); ans=max(ans,B[i][j]-minB[i][j]-1); } } return ans; } int main(){ cin>>n>>m; lld matrix[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>matrix[i][j]; } } lld ans=-1; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ B[i][j]=matrix[i][j]-i-j; } } ans=max(ans,solve()); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ B[i][j]=matrix[i][m-1-j]-i-j; } } ans=max(ans,solve()); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ B[i][j]=matrix[n-1-i][j]-i-j; } } ans=max(ans,solve()); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ B[i][j]=matrix[n-1-i][m-1-j]-i-j; } } ans=max(ans,solve()); 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...