Cod sursa(job #2026318)

Utilizator ioana_marinescuMarinescu Ioana ioana_marinescu Data 24 septembrie 2017 12:02:27
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
#include <bits/stdc++.h>

using namespace std;

FILE *fin=fopen("rj.in", "r");
ofstream fout("rj.out");

int a[101][101], b[101][101], n, m;
char s[101];

void afis()
{
    int i, j;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
            fout<<a[i][j]<<" ";
        fout<<'\n';
    }
}

void Lee(int xi, int yi, int xf, int yf, int a[101][101])
{
    int dx[]={-1, -1, -1, 0, 1, 1, 1, 0}, dy[]={-1, 0, 1, 1, 1, 0, -1, -1}, p, u, x, y, xx, yy, coada[10201][2], i;
    p=u=1;
    coada[1][0]=xi;
    coada[1][1]=yi;
    a[xi][yi]=1;
    while(p<=u)
    {
        xx=coada[p][0];
        yy=coada[p][1];
        for(i=0; i<=7; i++)
        {
            x=xx+dx[i];
            y=yy+dy[i];
            if(x>=1 && y>=1 && x<=n && y<=m && a[x][y]==0)
            {
                u++;
                coada[u][0]=x;
                coada[u][1]=y;
                a[x][y]=a[xx][yy]+1;

            }
        }
        p++;
    }
}
int main()
{
    int i, j, ok, xi, yi, xf, yf;
    char c;
    fscanf(fin, "%d%d", &n, &m);
    fscanf(fin, "%c", &c);
    for(i=1; i<=n; i++)
    {
        ok=0;
        for(j=1; j<=m+1; j++)
        {
            fscanf(fin, "%c", &c);
            if(c=='\n' && j<=m)
                ok=1;
            if(c=='R')
                xi=i, yi=j;
            else if(c=='J')
                xf=i, yf=j;
            else if(c=='X')
                a[i][j]=-1;
            else if(c==' ')
                a[i][j]=0;
            if(ok==1)
                break;
        }
    }
    //afis();
    int x, y, t, tmin=10201;
    Lee(xi, yi, xf, yf, a);
    Lee(xf, yf, xi, yi, b);
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
        if(a[i][j]==b[i][j] && a[i][j]>0)
    {
        t=a[i][j];
        if(t<tmin)
        {
            tmin=t;
            x=i;
            y=j;
        }
    }
    fout<<tmin<<" "<<x<<" "<<y<<'\n';
    return 0;
}