Submission #1318963

#TimeUsernameProblemLanguageResultExecution timeMemory
1318963Muhammad_AneeqMaxcomp (info1cup18_maxcomp)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h>
using namespace std;
int const N=1e3+10;
int mn[N][N][4]={};// 0 (0,0)  1(0,m-1) 2(n-1,0)  3(n-1,m-1)
inline void solve()
{
	int n,m;
	cin>>n>>m;
	int a[n][m];
	for (int i=0;i<n;i++)
		for (int j=0;j<m;j++)
			cin>>a[i][j];
	{// 0
		for (int i=0;i<n;i++)
		{
			for (int j=0;j<m;j++)
			{
				mn[i][j][0]=a[i][j]-i-j;
				if (i-1>=0)
					mn[i][j][0]=min(mn[i][j][0],mn[i-1][j][0]);
				if (j-1>=0)
					mn[i][j][0]=min(mn[i][j][0],mn[i][j-1][0]);
			}
		}
	}
	{// 1
		for (int i=0;i<n;i++)
		{
			for (int j=m-1;j>=0;j--)
			{
				mn[i][j][1]=a[i][j]-i+j;
				if (i-1>=0)
					mn[i][j][1]=min(mn[i][j][1],mn[i-1][j][1]);
				if (j+1<m)
					mn[i][j][1]=min(mn[i][j][1],mn[i][j+1][1]);
			}
		}
	}
	{// 2
		for (int i=n-1;i>=0;i--)
		{
			for (int j=0;j<m;j++)
			{
				mn[i][j][2]=a[i][j]+i-j;
				if (i+1<n)
					mn[i][j][2]=min(mn[i][j][2],mn[i+1][j][2]);
				if (j-1>=0)
					mn[i][j][2]=min(mn[i][j][2],mn[i][j-1][2]);
			}
		}
	}
	{// 3
		for (int i=n-1;i>=0;i--)
		{
			for (int j=m-1;j>=0;j--)
			{
				mn[i][j][3]=a[i][j]+i+j;
				if (i+1<n)
					mn[i][j][3]=min(mn[i][j][3],mn[i+1][j][3]);
				if (j+1<m)
					mn[i][j][3]=min(mn[i][j][3],mn[i][j+1][3]);
			}
		}
	}
	int ans=0;
	for (int i=0;i<n;i++)
	{
		for (int j=0;j<n;j++)
		{
			{//0
				ans=max(ans,a[i][j]-i-j-mn[i][j][0]);
			}
			{//1
				ans=max(ans,a[i][j]-i+j-mn[i][j][1]);
			}
			{//2
				ans=max(ans,a[i][j]+i-j-mn[i][j][2]);
			}
			{//3
				ans=max(ans,a[i][j]+i+j-mn[i][j][3]);
			}
		}
	}
	cout<<ans-1<<endl;
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...