Submission #9388

#TimeUsernameProblemLanguageResultExecution timeMemory
9388hodducOn grid (kriii2_O)C++98
4 / 4
48 ms2504 KiB
#include<stdio.h>
int R, C;
int map[301][301];
int s[301][301];
int d[301][301];
int dd[301][301];
int tr[301];
int main()
{
	scanf("%d %d", &R, &C);
	for(int i = 1; i <= R; i++) for(int j = 1; j <= C; j++){
		scanf("%d", &map[i][j]);
	}

	for(int i = 1; i <= R; i++){
		int t = 0;
		for(int j = 1; j <= C; j++){
			t += map[i][j];
			s[i][j] = s[i-1][j] + t;
		}
	}

	for(int i = 1; i <= R; i++)
	{
		for(int kk = 1; kk < i; kk++)
			tr[kk] = -1999999999;

		for(int j = 1; j <= C; j++)
		{
			int tt = 0;
			for(int k = 1; k < i; k++)
			{
				if(tt < tr[k] - s[k][j]) tt = tr[k] - s[k][j];

				int tmp = (dd[k][j] - s[i][j]);
				if(tr[k] < tmp) tr[k] = tmp;
			}
			d[i][j] = tt + s[i][j];
			dd[i][j] = d[i][j] + s[i][j];
		}
	}
	printf("%d\n", d[R][C]);
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...