# include # include # include # include using namespace std; bool a[160][160]; int r[12][21][2]; int q[12][21][2]; int t,k; int n,m; int mx,my,nx,ny; int maxx,maxy; int level=1; int maxdist(int v) { int i,j; int x1,y1,x2,y2; int maxd=0,d; for(i=1;i<=k;i++) { x1=r[v][i][0]; y1=r[v][i][1]; for(j=i+1;j<=k;j++) { x2=r[v][j][0]; y2=r[v][j][1]; d=abs(x1-x2)+abs(y1-y2); if(abs(x1-x2)>maxx)maxx=abs(x1-x2); if(abs(y1-y2)>maxy)maxy=abs(y1-y2); if(maxd1&&!a[x-1][y]) { r[v][i][0]=x-1; } else r[v][i][0]=x; r[v][i][1]=y; } } void makestepsouth(int v) { int i,j; int x,y; for(i=1;i<=k;i++) { x=r[v][i][0]; y=r[v][i][1]; if(x1&&!a[x][y-1]) { r[v][i][1]=y-1; } else r[v][i][1]=y; r[v][i][0]=x; } } void makestepeast(int v) { int i,j; int x,y; for(i=1;i<=k;i++) { x=r[v][i][0]; y=r[v][i][1]; if(y>ch; if(ch=='.')a[i][j]=0; else a[i][j]=1; } scanf("%d%d",&t,&k); int td,mind=10000; /*for(i=1;i<=t;i++) { td=maxdist(i); if(mind>td) { mind=td; level=i; } }*/ level=t; for(i=1;i<=t;i++) { for(j=1;j<=k;j++) { scanf("%d%d",&r[i][j][0],&r[i][j][1]); } } int P; printf("%d\n",level); int db,d; int pos=0; int v=0; for(P=1;P<=100000;P++) { // cout<=db)break; //cout<0){ if(mx>1||nx>1) { if((a[mx-1][my]==1&&a[nx-1][ny]==0&&nxmx)) { makestepsouth(level); printf("S"); db=d; continue; } }} if(maxy>0){ if(my>1||ny>1) { if((a[mx][my-1]==1&&a[nx][ny-1]==0&&ny>my)||(a[mx][my-1]==0&&a[nx][ny-1]==1&&nymy)) { //cout<<"&&"<=db)break; //cout<0){ if(mx>1||nx>1) { if((a[mx-1][my]==1&&a[nx-1][ny]==0&&nxmx)) { makestepsouth(level); printf("S"); db=d; continue; } }} if(maxy>0){ if(my>1||ny>1) { if((a[mx][my-1]==1&&a[nx][ny-1]==0&&ny>my)||(a[mx][my-1]==0&&a[nx][ny-1]==1&&nymy)) { //cout<<"&&"<=db)break; //cout<0){ if(mx>1||nx>1) { if((a[mx-1][my]==1&&a[nx-1][ny]==0&&nxmx)) { makestepsouth(level); printf("S"); db=d; continue; } }} if(maxy>0){ if(my>1||ny>1) { if((a[mx][my-1]==1&&a[nx][ny-1]==0&&ny>my)||(a[mx][my-1]==0&&a[nx][ny-1]==1&&nymy)) { //cout<<"&&"<=db)break; //cout<0){ if(mx>1||nx>1) { if((a[mx-1][my]==1&&a[nx-1][ny]==0&&nxmx)) { makestepsouth(level); printf("S"); db=d; continue; } }} if(maxy>0){ if(my>1||ny>1) { if((a[mx][my-1]==1&&a[nx][ny-1]==0&&ny>my)||(a[mx][my-1]==0&&a[nx][ny-1]==1&&nymy)) { //cout<<"&&"<=db)break; //cout<0){ if(mx>1||nx>1) { if((a[mx-1][my]==1&&a[nx-1][ny]==0&&nxmx)) { makestepsouth(level); printf("S"); db=d; continue; } }} if(maxy>0){ if(my>1||ny>1) { if((a[mx][my-1]==1&&a[nx][ny-1]==0&&ny>my)||(a[mx][my-1]==0&&a[nx][ny-1]==1&&nymy)) { //cout<<"&&"<