Submission #521328

#TimeUsernameProblemLanguageResultExecution timeMemory
521328lucriMaxcomp (info1cup18_maxcomp)C++17
100 / 100
394 ms24664 KiB
#include <iostream> using namespace std; long long x[1010][1010],n,m,a[1010][1010],ans=-100000000000; int main() { cin>>n>>m; for(long long i=1;i<=n;++i) for(long long j=1;j<=m;++j) { cin>>a[i][j]; a[i][j]+=i+j; x[i][j]=a[i][j]; } for(long long i=n;i>=1;--i) for(long long j=m;j>=1;--j) { if(j<m) x[i][j]=min(x[i][j],x[i][j+1]); if(i<n) x[i][j]=min(x[i][j],x[i+1][j]); if(ans<a[i][j]-x[i][j]-1) ans=a[i][j]-x[i][j]-1; } for(long long i=n;i>=1;--i) for(long long j=m;j>=1;--j) { a[i][j]-=2*(i+j); x[i][j]=a[i][j]; if(j<m) x[i][j]=max(x[i][j],x[i][j+1]); if(i<n) x[i][j]=max(x[i][j],x[i+1][j]); if(ans<x[i][j]-a[i][j]-1) ans=x[i][j]-a[i][j]-1; } for(long long i=1;i<=n;++i) for(long long j=m;j>=1;--j) { a[i][j]+=2*i; x[i][j]=a[i][j]; if(j<m) x[i][j]=max(x[i][j],x[i][j+1]); if(i>1) x[i][j]=max(x[i][j],x[i-1][j]); if(ans<x[i][j]-a[i][j]-1) ans=x[i][j]-a[i][j]-1; } for(long long i=1;i<=n;++i) for(long long j=m;j>=1;--j) { a[i][j]+=2*j-2*i; x[i][j]=a[i][j]; if(j<m) x[i][j]=min(x[i][j],x[i][j+1]); if(i>1) x[i][j]=min(x[i][j],x[i-1][j]); if(ans<a[i][j]-x[i][j]-1) ans=a[i][j]-x[i][j]-1; } cout<<ans; 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...