Pagini recente » Cod sursa (job #685507) | Cod sursa (job #3241918) | Cod sursa (job #2964275) | Cod sursa (job #3277299) | Cod sursa (job #96836)
Cod sursa(job #96836)
#include <stdio.h>
int main()
{int rom[102][102],jul[102][102],v[5][3],i,j,n,m,min,x,y,k,ok;
char c;
FILE *f;
f=fopen("rj.in","r");
fscanf(f,"%d%d\n",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fscanf(f,"%c",&c);
/*printf("\n%c",c);getch();*/
if (c=='R') {rom[i][j] = 0;jul[i][j] = -1;}
else if (c=='J') {rom[i][j] = -1;jul[i][j] = 0;}
else if (c=='X') {rom[i][j] = -2;jul[i][j] = -2;}
else {rom[i][j]=-1;jul[i][j]=-1;}
}
fscanf(f,"\n");}
v[1][1] = -1;v[1][2] = 0;
v[2][1] = 1;v[2][2] = 0;
v[3][1] = 0;v[3][2] = 1;
v[4][1] = 0;v[4][2] = -1;
min = 0;
do
{ok=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if (rom[i][j]==min)
{
for(k=1;k<=4;k++)
{x = i + v[k][1];
y = j + v[k][2];
if ((rom[x][y] == -1) || (rom[x][y] > min)) {rom[x][y] = min+1;
ok=1;}}
}
min+=1;}
while (ok==1);
min=0;
do
{ok=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if (jul[i][j]==min)
{
for(k=1;k<=4;k++)
{x = i + v[k][1];
y = j + v[k][2];
if ((jul[x][y] == -1) || (jul[x][y] > min)) {jul[x][y] = min+1;
ok=1;}}
}
min+=1;}
while (ok==1);
min=32000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if ((rom[i][j]==jul[i][j])&&(rom[i][j] > 0)&&(rom[i][j] < min)) {min=rom[i][j];x=i;y=j;}
f=fopen("rj.out","w");
fprintf(f,"%d %d %d",x,y,min);
fclose(f);
return 0;}