Cod sursa(job #1003292)

Utilizator victor_crivatCrivat Victor victor_crivat Data 30 septembrie 2013 11:44:02
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <fstream>
#include <cstring>
#define inf 100000
using namespace std;
char a[10000];
ifstream f("rj.in");
ofstream g("rj.out");
bool ok;
const int dx[8]= {-1,-1,0,1,1,1,0,-1};
const int dy[8]= {0,1,1,1,0,-1,-1,-1};
int v[105][105],i,j,m,n,l,c,x,y,mm,w[105][105];
void lee(int v[105][105])
{
    int k,i,j,l;
    k=0;
    ok=true;
    while(ok==true)
    {
        ok=false;
        for (i=1; i<=n; i++)
            for (j=1; j<=m; j++)
                if (v[i][j]==k)
                {
                    for (l=0; l<=7; l++)
                        if (v[i+dx[l]][j+dy[l]]==inf)
                        {
                            v[i+dx[l]][j+dy[l]]=k+1;
                            ok=true;
                        }
                }
        k++;
    }
}
int main()
{
    f>>n>>m;
    for (i=1; i<=n; i++)
    {
        f.get();
        f.get(a,1000);
        for (j=0; j<=m-1; j++)
        {
            if (a[j]=='X') v[i][j+1]=w[i][j+1]=-1;
            if (a[j]==' ') v[i][j+1]=w[i][j+1]=inf;
            if (a[j]=='R')
            {
                v[i][j+1]=0;
                w[i][j+1]=inf;
            }
            if (a[j]=='J')
            {
                w[i][j+1]=0;
                v[i][j+1]=inf;
            }
        }
    }
    lee(v);
    lee(w);

            mm=inf;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            if (v[i][j]==w[i][j]&&v[i][j]>0&&v[i][j]<mm&&v[i][j]!=inf)
            {
                mm=v[i][j];
                x=i;
                y=j;
            }
    g<<mm+1<<" "<<x<<" "<<y;
}