Cod sursa(job #1023375)

Utilizator cypry97Dascalitei Ciprian cypry97 Data 6 noiembrie 2013 21:04:57
Problema Rj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.66 kb
#include <fstream>
#include <cstring>
#include <cstdio>
using namespace std;

short n,m;
char s[102];
bool v[105][105];
short mr[105][105];
short mj[105][105];
short xmin,ymin,tmin=30000;

int k;
short st[3][10010];

short x[9]= {-1,-1,0,1,1,1,0,-1};
short y[9]= {0,1,1,1,0,-1,-1,-1};

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


int main()
{
    short i,j;
    short rx,ry;
    short jx,jy;
    short k;
    in>>n>>m;
    for(i=0; i<n; i++)
    {
        in.get();
        in.get(s,102);
        for(j=0; j<m; j++)
        {
            if(s[j]==0||s[j]==' ')
                v[i+1][j+1]=1;
            else
            {
                if(s[j]=='R')
                    rx=i+1,ry=j+1;
                if(s[j]=='J')
                    jx=i+1,jy=j+1;
                v[i+1][j+1]=0;
            }
            mr[i+1][j+1]=30000;
            mj[i+1][j+1]=30000;
        }
    }
    k=1;
    st[0][1]=rx;
    st[1][1]=ry;
    st[2][1]=1;
    for(i=1; i<=k; i++)
    {
        if(mr[st[0][i]][st[1][i]]>st[2][i])
        {
            mr[st[0][i]][st[1][i]]=st[2][i];
            for(j=0; j<=7; j++)
                if(v[st[0][i]+x[j]][st[1][i]+y[j]]==1&&mr[st[0][i]+x[j]][st[1][i]+y[j]]>st[2][i]+1)
                {
                    k++;
                    st[0][k]=st[0][i]+x[j];
                    st[1][k]=st[1][i]+y[j];
                    st[2][k]=st[2][i]+1;
                }
        }
    }
    k=1;
    st[0][1]=jx;
    st[1][1]=jy;
    st[2][1]=1;
    for(i=1; i<=k; i++)
    {
        if(mj[st[0][i]][st[1][i]]>st[2][i])
        {
            mj[st[0][i]][st[1][i]]=st[2][i];
            for(j=0; j<=7; j++)
                if(v[st[0][i]+x[j]][st[1][i]+y[j]]==1&&mj[st[0][i]+x[j]][st[1][i]+y[j]]>st[2][i]+1)
                {
                    k++;
                    st[0][k]=st[0][i]+x[j];
                    st[1][k]=st[1][i]+y[j];
                    st[2][k]=st[2][i]+1;
                }
        }
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(mr[i][j]==mj[i][j])
                if(mr[i][j]<tmin)
                {
                    tmin=mr[i][j];
                    xmin=i;
                    ymin=j;
                }
    out<<tmin<<' '<<xmin<<' '<<ymin;
    /**
    out<<"\n\n\n";
    out.close();
    FILE *a;
    a=fopen("rj.out","w");
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
            fprintf(a,"%5d ",mr[i][j]);
        fprintf(a,"\n");
    }
    fprintf(a,"\n");
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
            fprintf(a,"%5d ",mj[i][j]);
        fprintf(a,"\n");
    }
    **/
    return 0;
}