View Code of Problem 3569

#include<stdio.h>
#include<stdlib.h>
int search_max(int *sum,int size)
{
	int tmp,account=0,max=-10000;
	for(int i=0;i<size;i++)
	{
		if(account<0)
			account=0;
		account+=sum[i];
		if(max<account)
			max=account;
	}
	return max;
}



int main(void)
{
	int t;scanf("%d",&t);
	while(t--)
	{
		int m,max=-10000,tmp;scanf("%d",&m);
		int array[100][100];
		for(int i=0;i<m;i++)
			for(int j=0;j<m;j++)
				scanf("%d",&array[i][j]);
		for(int i=0;i<m;i++)
		{
			for(int j=i+1;;j++)
			{
				tmp=search_max(array[i],m);
				if(tmp>max) max=tmp;
				if(j==m) break;
				for(int k=0;k<m;k++)
					array[i][k]+=array[j][k];
			}
		}
		printf("%d\n",max);
	}
}

Double click to view unformatted code.


Back to problem 3569