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);            
}

Download