1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=305; int n,m,mv[400005][2][2],vis[N][N],cnt=0; char s[100005]; void add(int x1,int y1,int x2,int y2){ mv[++cnt][0][0]=x1; mv[cnt][0][1]=y1; mv[cnt][1][0]=x2; mv[cnt][1][1]=y2; vis[x2][y2]++; } void Move(int x,int y,bool t){ if (t){ if (x!=2)add(x,y,2,y); else add(x,y,2,y==1?2:1); } else{ if (x!=1)add(x,y,1,y); else add(x,y,1,y==1?2:1); } } int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++){ scanf("%s",s); for (int k=strlen(s)-1;k>=0;k--) Move(i,j,s[k]=='1'); } for (int i=1;i<=2;i++) for (int j=2;j<=m;j++){ for (int k=1;k<=vis[i][j];k++)add(i,j,i,1); vis[i][j]=0; } int tot=cnt; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++){ scanf("%s",s); for (int k=0;s[k];k++) Move(i,j,s[k]=='1'); } for (int i=1;i<=2;i++) for (int j=2;j<=m;j++) for (int k=1;k<=vis[i][j];k++)add(i,j,i,1); printf("%d\n",cnt); for (int i=1;i<=tot;i++) printf("%d %d %d %d\n",mv[i][0][0],mv[i][0][1],mv[i][1][0],mv[i][1][1]); for (int i=cnt;i>tot;i--) printf("%d %d %d %d\n",mv[i][1][0],mv[i][1][1],mv[i][0][0],mv[i][0][1]); }
- 1
信息
- ID
- 6849
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者