@[xibaby](/user/995569) 在C++14下,在全局定义x1,y1,xx,yy等我也记不清了会CE
by zyh0516_lucky @ 2023-11-05 00:39:23
@[2022zhangyuanhao](/user/746930) 这个问题倒是的,只是如何纠正大错误呢?
```
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1001][1001],t,s,b[2001];
int main(){
int x1=0,y1=0,x2=0,y2=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
swap(a[x1][y1],a[x2][y2]);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]>a[i-1][j]&&
a[i][j]>a[i+1][j]&&
a[i][j]>a[i][j-1]&&
a[i][j]>a[i][j+1]){
s++; b[s]=i,b[s+1]=j;
}
printf("%d\n",s);
for(int i=1;i<=2*s;i++)
printf("%d %d\n",b[i],b[i+1]);
return 0;
}
```
by xibaby @ 2023-11-05 00:44:34
@[xibaby](/user/995569) 求关注
### 因为b数组.是访问n×m次的,如果每次都有(当然不可能),保险起见开n×m,是的还要再×2,因为每次s不应该++而应该+=2。数组范围:n×m×2=1000×1000×2=2000005,实际不可能都是山峰,但还是为了保险,虽然有点无脑(还好没MLE)。
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1001][1001],t,s,b[2000005];
int main(){
int x,y,aa,bb;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d",&x,&y,&aa,&bb);
swap(a[x][y],a[aa][bb]);
}
s=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]>a[i-1][j]&&
a[i][j]>a[i+1][j]&&
a[i][j]>a[i][j-1]&&
a[i][j]>a[i][j+1]){
b[s]=i,b[s+1]=j;
s+=2;
}
printf("%d\n",(s-1)>>1);
for(int i=1;i<s;i+=2)
printf("%d %d\n",b[i],b[i+1]);
return 0;
}
```
by zyh0516_lucky @ 2023-11-05 07:27:25
@[2022zhangyuanhao](/user/746930) y0,y1,yn,j0,j1,jn是cpp保留字,不能全局定义
by Shiota_Kaede @ 2023-11-05 07:47:15
@[Shiota_Kaede](/user/400269) 正确的呢
by zyh0516_lucky @ 2023-11-05 12:17:54
@[2022zhangyuanhao](/user/746930) @[Shiota_Kaede](/user/400269) 非常感谢!!!
by xibaby @ 2023-11-05 12:34:20