Cod sursa(job #244827)

Utilizator iepureAndreea iepure Data 16 ianuarie 2009 01:03:36
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#include<stdio.h>
#include<values.h>
#include<iostream.h>
int a[10][10], b[10][10], cx1[100], cy1[100], cx2[100], cy2[100];

void lee(int a[10][10], int jx, int jy, int cx1[100], int cy1[100])
{int p, u, x, y, xnou, ynou, i, dx[]={0, -1, -1, 0, 1, 1, 1, 0, -1}, dy[]={0, 0, 1, 1, 1, 0, -1, -1, -1};
 p=u=1;
 a[jx][jy]=1;
 cx1[u]=jx;
 cy1[u]=jy;
 while (p<=u) {x=cx1[p];
	       y=cy1[p];
	       for (i=1;i<=8;i++) {xnou=x+dx[i];
				   ynou=y+dy[i];
				   if (a[xnou][ynou]==0) {a[xnou][ynou]=a[x][y]+1;
							  cx1[++u]=xnou;
							  cy1[u]=ynou;
							  }
				   }
	       p++;
	       }
}	       			   			      


int main()
{int m, n, i, j, jx, jy, rx, ry, min=MAXINT, z, t;
 char c;
 FILE *f=fopen("rj.in","r");
 FILE *g=fopen("rj.out","w");
 fscanf (f,"%d %d", &m, &n);
 fscanf(f,"%c",&c);
 for (i=1;i<=m;i++) {for (j=1;j<=n;j++) {fscanf (f,"%c",&c);
					if (c=='X') a[i][j]=b[i][j]=-1;
                                        else if (c==' ') a[i][j]=b[i][j]=0;
					else if (c=='R') {b[i][j]=1;
							  rx=i;
							  ry=j;
							  }
					     else if (c=='J') {a[i][j]=1;
							       jx=i;
							       jy=j;
							       }
					}
		    fscanf (f,"%c",&c);
		    }

 lee(a,jx,jy,cx1,cy1);

 for (i=1;i<=m;i++) for (j=1;j<=n;j++) if (b[i][j]>1) b[i][j]=0;

 lee(b,rx,ry,cx2,cy2);


 for (i=1;i<=m;i++) for (j=1;j<=n;j++) if (a[i][j]!=-1&&a[i][j]==b[i][j]&&a[i][j]<min) {min=a[i][j];
											z=i;
											t=j;
											}
 fprintf(g,"%d %d %d\n", min, z, t);
 

 fclose(f);
 fclose(g);
 return 0;
}