BONUS - VOI 2011 Phần thưởng
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
int f[1001][1001],a[1001][1001],g[1001];
int main()
{
//freopen("BONUS.in","r",stdin);
int n,m,kq = 0;
scanf("%d %d",&n,&m);
for(int i = 1;i<=n;i++) {f[i][1] = 0,g[i]=0;}
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
{
scanf("%d",&a[i][j]);
if(j<=m)
f[i][1] += a[i][j];
else f[i][j-m+1] = f[i][j-m]+a[i][j]-a[i][j-m];
}
for(int i = 1;i<=n-m+1;i++)
for(int j = 1;j<=n;j++)
{
if(j<=m) g[i] += f[j][i];
else g[i] += f[j][i]-f[j-m][i];
if(g[i]>kq)
kq = g[i];
}
printf("%d",kq);
// getch();
}