C++代码结果显示内存超限

为什么这个代码上传结果会提示内存超限?要怎么才能解决这个问题呢?

#include
using namespace std;
int main()
{
int m,n;
cin>>n>>m;
int b[n][n],a=1,m1,m2;
for(int i=1;i<=n;i++)
{
if(i%2==0)
{
for(int j=i-1;j>=0;j--)
{
b[i-1][j]=a;
a++;
}
}
else
{
for(int j=0;j
{
b[i-1][j]=a;
a++;
}
}
}
for(int i=0;i
{
cin>>m1>>m2;
if(b[m1-1][m2-1])
{
cout<
}
if(!b[m1-1][m2-1])
{
cout<<0<
}
}
return 0;
}

题目是什么???
应该是不允许先将数据存储到数组再进行检索判断
而是在循环中用算法进行数值计算后判断

二维数组开大了,一般竞赛题极限开个10^7数量级个int数组,你这个n输入达到10000及以上内存就装不下了。

数组过大全局二维数组也就开到1e8极限,函数内更小。建议去搜索一下数组开的范围

for循环占用内存空间和时间复杂度大,他的意思是想让你优化优化项目,为了达到他的内存要求。