Submission #521326

#TimeUsernameProblemLanguageResultExecution timeMemory
521326lucriMaxcomp (info1cup18_maxcomp)C++17
15 / 100
1 ms332 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/2;++i) for(long long j=1;j<=m;++j) { a[i][j]+=i+j; a[n-i+1][j]+=i+j; swap(a[i][j],a[n-i+1][j]); a[i][j]+=i+j; a[n-i+1][j]+=i+j; x[i][j]=a[i][j]; x[n-i+1][j]=a[n-i+1][j]; } if(n%2==0) { int i=n/2; for(long long j=1;j<=m;++j) { a[i][j]+=i+j; a[n-i+1][j]+=i+j; swap(a[i][j],a[n-i+1][j]); a[i][j]+=i+j; a[n-i+1][j]+=i+j; x[i][j]=a[i][j]; x[n-i+1][j]=a[n-i+1][j]; } } else { int i=n/2; for(long long j=1;j<=m;++j) { a[i][j]+=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]=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; } 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...