Cod sursa(job #2346048)

Utilizator radu_stStoican Radu radu_st Data 16 februarie 2019 23:34:26
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <fstream>
using namespace std;
ifstream f("rj.in"); ofstream g("rj.out");
int i , j , m , n , xr , yr , xj , yj , r[102][102] , u[102][102] , a[102][102];
int dl[] = {1 , 0 , -1 , 0 , -1 , -1 , 1 , 1};
int dc[] = {0 , -1 , 0 , 1 , 1 ,-1 ,1 ,-1};
struct coada{
int l;
int c;
};
coada c[102*102];
char ch[102];
void lee(int a[102][102] , int x , int y)
{
    int i , j , in , jn , k , p , u;
    a[x][y] = 1;
    c[1].l = x;
    c[1].c = y;
    p = u = 1;
    while(p <= u)
    {
        i = c[p].l;
        j = c[p].c;
        for(k = 0; k < 8; k++)
        {
            in = i + dl[k];
            jn = j + dc[k];
            if(in >= 1 && in <= n && jn >= 1 && jn <= m && a[in][jn] == 0)
            {
                a[in][jn] = a[i][j] + 1;
                u++;
                c[u].l = in;
                c[u].c = jn;
            }
        }
        p++;
        }
    }
void drumminim()
{
    int i , j , tmin = 102*102 , xmin , ymin;
    xmin = ymin = 1;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= m; j++)
    {
        if(r[i][j] == u[i][j] && r[i][j] > 0 && tmin > r[i][j])
        {
            tmin = r[i][j];
            xmin = i;
            ymin = j;
        }

    }
    g << tmin << " " << xmin << " " << ymin;
}
int main(){
int i , j;
f >> n >> m;
f.get();
for(i = 1; i <= n; i++){
    f.getline(ch , 102);
    for(j = 0; j < m; j++)
    {

        if(ch[j] == 'R')
        {
            xr = i;
            yr = j+1;
        }
        else if(ch[j] == 'J')
        {
            xj = i;
            yj = j+1;
        }
        else if(ch[j] == 'X')
        {
            r[i][j+1] = -1;
            u[i][j+1] = -1;
        }
    }

}
    lee(r , xr , yr);
    lee(u , xj , yj);
    drumminim();
    return 0;
}