一道C++题目,小弟我的代码哪里有有关问题,为什么得不出正确的答案

一道C++题目,请教各位,我的代码哪里有问题,为什么得不出正确的答案?
Description
二哥在自己的后花园里种了一些花生,也快到了收获的时候了。这片花生地是一个长度为L、宽度为W的矩形,每个单位面积上花生产量都是独立的。他想知道,对于某个指定的区域大小,在这么大的矩形区域内,花生的产量最大会是多少。
Input Format
第1行有2个整数,长度L和宽度W。
第2行至第L+1行,每行有W个整数,分别表示对应的单位面积上的花生产量A( 0≤A<10 )。
第L+2行有2个整数,分别是指定的区域大小的长度a和宽度b。

Output Format
输出一个整数m,表示在指定大小的区域内,花生最大产量为m。
Sample Input
4 5
1 2 3 4 5
6 7 8 0 0
0 9 2 2 3
3 0 0 0 1
3 3

Sample Output
38

样例解释
左上角:38 = (1+2+3) + (6+7+8) + (0+9+2)
数据范围
对于30%的数据: 1≤L,W≤100;
对于100%的数据: 1≤L,W≤1000。
全部区域大小满足:1≤a≤L,1≤b≤W 。

我的代码如下:
#include <iostream>
#include <cstring>
using namespace std;

int L,W,a,b,i,j,x,y,p,q,r,s;

int main()
{
cin>>L>>W;
int peanut[L][W];
for (i=0;i<L;i++) 
 for (j=0;j<W;j++) 
   cin>>peanut[i][j];
cin>>a>>b;

int sumArray[L-a+1][W-b+1];
memset(sumArray,0,(L-a+1)*(W-b+1)*sizeof(int));

for (p=0;p<L-a+1;p++)
 for (q=0;q<W-b+1;q++) 
   {
for (r=p;r<a;r++)
     for (s=q;s<b;s++) sumArray[p][q]+=peanut[r][s]; 
   }
   
int max = 0;
for (x=0;x<L-a+1;x++)
 for (y=0;y<W-b+1;y++) 
   if (sumArray[x][y]>max) max=sumArray[x][y];
cout << max;
return 0;
}


最后发现总是输出左上角框住的和,求大神们详解!谢谢啦!
C++

------解决方案--------------------
你的代码竟然能通过编译。。能这样开数组的么。。
另外,下边的地方错了。。

for (p=0;p<L-a+1;p++)
for (q=0;q<W-b+1;q++) 
{
for (r=p;r<p + a;r++)//这里是p+a。。不是a。。下边一样。。
for (s=q;s<q + b;s++) sumArray[p][q]+=peanut[r][s]; 
}