Cod sursa(job #2337357)

Utilizator suzanicaSuzanica Mihu suzanica Data 6 februarie 2019 12:15:43
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.9 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("rj.in");
ofstream fout("rj.out");

char s[110];
int i,j,a[101][101],b[101][101],n,m,rx,ry,jx,jy,pr,ul,k;

int dx[]={-1,-1,-1,0,1,1,1,0};
int dy[]={-1,0,1,1,1,0,-1,-1};

struct pos
{
    int x,y;
};
pos q[1010];
void rlee()
{
   pr=ul=1;
   a[rx][ry]=1;
   q[ul].x=rx;
   q[ul].y=ry;
   while(pr<=ul)
   {
       i=q[pr].x;
       j=q[pr].y;
       pr++;
       for(k=0;k<=7;k++)
       {
           if(a[i+dx[k]][j+dy[k]]==0)
           {
               ul++;
               q[ul].x=i+dx[k];
               q[ul].y=j+dy[k];
               a[i+dx[k]][j+dy[k]]=a[i][j]+1;
           }
       }
   }
}
void jlee()
{
   pr=ul=1;
   b[jx][jy]=1;
   q[ul].x=jx;
   q[ul].y=jy;
   while(pr<=ul)
   {
       i=q[pr].x;
       j=q[pr].y;
       pr++;
       for(k=0;k<=7;k++)
       {
           if(b[i+dx[k]][j+dy[k]]==0)
           {
               ul++;
               q[ul].x=i+dx[k];
               q[ul].y=j+dy[k];
               b[i+dx[k]][j+dy[k]]=b[i][j]+1;
           }
       }
   }
}
int main()
{
    fin>>n>>m;
    fin.get();
    for(i=1;i<=n;i++)
    {
        fin.getline(s,110);
        for(j=0;j<=m-1;j++)
            if(s[j]==' ')
            a[i][j+1]=0;
        else
            if(s[j]=='X')
            a[i][j+1]=-1;
        else
            if(s[j]=='R')
            {
                rx=i;
                ry=j+1;
            }
        else
            {
                jx=i;
                jy=j+1;
            }
    }
    for(i=0;i<=n+1;i++)
        a[i][0]=a[i][m+1]=-1;
    for(i=0;i<=m+1;i++)
        a[0][i]=a[n+1][i]=-1;
    for(i=0;i<=n+1;i++)
        for(j=0;j<=m+1;j++)
        b[i][j]=a[i][j];
        rlee();
        jlee();
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(a[i][j]==b[i][j] && a[i][j]>1)
        fout<<a[i][j]<<" "<<i<<" "<<j;
}