#include<cstdio>
#include<iostream>
#include<queue>
#define INF 30000
#define MAX 100
using namespace std;
int main()
{ int array[MAX][MAX];
int sum[MAX][MAX][MAX];
while(1){ int N;
cin>>N;
if(feof(stdin))break;
priority_queue<int>pq;
int i,j,k;
for(i=0;i<N;i++)
for(j=0;j<N;j++){cin>>array[i][j]; //array input
pq.push(array[i][j]);} //to handle the case of all negative entries
for(i=0;i<N;i++) // taking input for column combination sums
for(j=0;j<N;j++){sum[i][j][j]=array[i][j];
for(k=j+1;k<N;k++)sum[i][j][k]=sum[i][j][k-1]+array[i][k];
}
int Sum,maxsum=-INF;
for(j=0;j<N;j++)
for(k=j;k<N;k++){Sum=0;
for(i=0;i<N;i++){Sum+=sum[i][j][k];
if(Sum<0){Sum=0;}
else if(Sum>=maxsum){maxsum=Sum;}
}
}
if(maxsum==-INF)maxsum=pq.top();
cout<<maxsum<<endl;
}
return 0;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন