Cod sursa(job #782245)

Utilizator radu2004GOLD radu radu2004 Data 26 august 2012 14:34:52
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.33 kb
#include <cstdio>
typedef struct {int l,c;} PUNCT;
PUNCT c[100],v;
int x0,y0,x1,y1,l1,c1,i,j,ok,k,n,m,p,u,t,dl[]={1,0,-1,0,1,1,-1,-1},dc[]={0,1,0,-1,1,-1,1,-1};
int a[100][100],b[100][100];
FILE *f,*g;
int main()
{f=fopen ("rj.in","r");
 g=fopen ("rj.out","w");
 fscanf (f,"%d %d",&n,&m);
 fscanf (f,"%c",&k);
k=1;
 for (i=1;i<=n;i++) {j=1;ok=0;
  while (j<=m) {fscanf (f,"%c",&a[i][j]);
                      if (a[i][j]==10) {for (p=j;p<=m;p++) {a[i][p]=32;
                                                           j++;}

                      b[i][p]=a[i][p];
                      ok=1;}
                          else {
                              b[i][j]=a[i][j];
                      if ( a[i][j]=='R') {x0=i;
                                         y0=j;
                                        }
                             else if (a[i][j]=='J') {x1=i;
                                                     y1=j;
                                                    }
                                            else if (a[i][j]!='X') k++;
                                            j++;              } }
  if (ok==0) fscanf (f,"%c",&p);
   }
 a[0][0]=88;
 ok=0;
 for (i=1;i<=n+1;i++) { a[i][0]='X';
                      a[i][m+1]='X';
                    }
 for (i=1;i<=m+1;i++) { a[0][i]='X';
                      a[n+1][i]='X';
                    }

p=1;
u=1;
c[1].l=x0;
c[1].c=y0;
a[x0][y0]=1;
while (p<=u && p<=k)
{
    v=c[p];
    for (i=0;i<=7;i++)
    {
        l1=v.l+dl[i];
        c1=v.c+dc[i];
        if (a[l1][c1]==32) {c[++u].l=l1;
                             c[u].c=c1;
                             a[l1][c1]=a[v.l][v.c]+1;
                            }
    }
   p++;
}

p=1;
u=1;
c[1].l=x1;
c[1].c=y1;
b[x1][y1]=1;
while (p<=u && p<=k && ok==0)
{
    v=c[p];
    i=0;
    while (i<=7 && ok==0)
    {
        l1=v.l+dl[i];
        c1=v.c+dc[i];
        if (b[l1][c1]==32) {c[++u].l=l1;
                             c[u].c=c1;
                             b[l1][c1]=b[v.l][v.c]+1;
                             if (b[l1][c1]==a[l1][c1]) {t= (a[l1][c1]);
                                                       ok=1;
                                                      }
                            }
    i++;}
   p++;
}

fprintf (g,"%d %d %d",t,l1,c1);
    return 0;
}