BONUS - VOI 2011 Phần thưởng
Tác giả: skyvn97
Ngôn ngữ: C++
#include<stdio.h>
#define MAX 1500
unsigned long a[MAX][MAX];
unsigned long s[MAX][MAX];
unsigned long max,sum;
int n,k,i,j;
int main(void)
{
scanf("%d",&n);
scanf("%d",&k);
for (i=1;i<=n;i=i+1)
for (j=1;j<=n;j=j+1)
{
scanf("%lu",&a[i][j]);
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
}
max=0;
for (i=1;i<=n-k+1;i=i+1)
for (j=1;j<=n-k+1;j=j+1)
{
sum=s[i+k-1][j+k-1]-s[i-1][j+k-1]-s[i+k-1][j-1]+s[i-1][j-1];
if (sum>max) max=sum;
}
printf("%lu",max);
}