Cod sursa(job #1811313)

Utilizator dragos231456Neghina Dragos dragos231456 Data 21 noiembrie 2016 09:20:17
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rj.in"); ofstream g("rj.out");
string s;
struct{short x,y;} v[10003];
short h,u,a[102][102],n,m,b=1,k=0,i,j,rez,i1,j1;
int verif(short h, short u)
{
    if(a[h][u]==0 && h>=1 && h<=n && u>=1 && u<=m
    && (h!=v[1].x || u!=v[1].y) && (h!=v[2].x || u!=v[2].y)) return 1;
    else return 0;
}
int main()
{
    f>>n>>m; getline(f,s);
    for(i=1;i<=n;++i)
    {
        getline(f,s);
        for(j=0;j<m;++j)
        {
            if(s[j]=='X') a[i][j+1]=-1;
            else if(s[j]=='R' || s[j]=='J')
            {
                ++k;
                v[k].x=i;
                v[k].y=j+1;
            }
        }
    }
    while(b<=k)
    {
        i=v[b].x;
        j=v[b].y;
        for(int c=-1;c<=1;++c)
        {
            for(int d=-1;d<=1;++d)
            {
                h=i+c;
                u=j+d;
                if(verif(h,u))
                {
                    a[h][u]=a[i][j]+1;
                    ++k;
                    v[k].x=h;
                    v[k].y=u;
                }
                else if(a[h][u]==a[i][j]+1)
                {
                    rez=a[h][u];
                    i1=h;
                    j1=u;
                    b=10000;
                }
            }
        }
        ++b;
    }
   /* for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    } */
    g<<rez<<' '<<i1<<' '<<j1;
    return 0;
}