这个程序为什么会TLE? n不是只有200吗?
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[205][205], qian[205][205], ans, n, m;
inline int read()
{ long long ans=0;
char last=' ',ch=getchar();
while(ch<'0'||ch>'9')
{
last=ch;ch=getchar();
}
while(ch>='0'&&ch<='9')
{
ans=(ans<<3)+(ans<<1);
ans+=ch-'0';ch=getchar();
}
return last=='-'?-ans:ans;
}
signed main()
{
n = read();
m = read();
for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) a[i][j] = read();
for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) qian[i][j] = qian[i - 1][j] + qian[i][j - 1] - qian[i - 1][j - 1] + a[i][j];
for (int i = 1; i <= n; i++) //开始4for枚举
for (int j = 1; j <= m; j++)
for (int x = i; x <= n; x++)
for (int y = j; y <= m; y++)
if (qian[x][y] + qian[i - 1][j - 1] - qian[x][j - 1] - qian[i - 1][y] > 0) ans = max(ans, (x - i + 1) * (y - j + 1));
cout << ans << endl;
return 0;
}
为什么会错呢?