Cod sursa(job #1617517)

Utilizator DenisVieriuDenis Vieriu DenisVieriu Data 27 februarie 2016 14:56:05
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int dx[]={20,-1,-1,0,1,1,1,0,-1};
const int dy[]={20,0,1,1,1,0,-1,-1,-1};
ofstream g("rj.out");
int a[101][101],n,m,xr,yr,xj,yj,t,ii,jj;
void citire()
{
    int i,j;
    ifstream f("rj.in");
    char x[101];
    f>>n>>m;
    f.get();
    for(i=1;i<=n;i++)
    {
        f.getline(x,101,'\n');

        for(j=0;j<m;j++)
        {

            if(x[j]=='R')
            {
                xr=i;
                yr=j+1;
                a[i][j+1]=0;
            }
            else
                if(x[j]==' ')
                a[i][j+1]=0;
            else
                if(x[j]=='X')
                a[i][j+1]=-1;
            else
                if(x[j]=='J')
            {
                xj=i;
                yj=j+1;
                a[i][j+1]=0;

            }
            else
                a[i][j+1]=0;
        }
    }

    f.close();
}
void afisare()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            g<<a[i][j]<<" ";
    g<<endl;
    }
    g<<endl;
}
int verif(int i,int j)
{
    return (i>=1&&i<=n&&j>=1&&j<=m);
}
void lee(int x,int y,int pas,int ok)
{
    int xx,yy,i;
    a[x][y]=pas;
    for(i=1;i<=8;i++)
    {
        xx=x+dx[i];
        yy=y+dy[i];
        if(ok==2)
        {
             if(a[xx][yy]==pas+1)
            {cout<<"da";
            t=pas+1;
            ii=xx;
            jj=yy;
            i=9;
            }

        }

            if(verif(xx,yy)==1)
            if(a[xx][yy]==0||a[xx][yy]>pas+1)
            lee(xx,yy,pas+1,ok);

    }
}
int main()
{
    citire();
    lee(xr,yr,1,1);
    lee(xj,yj,1,2);
    g<<t<<" "<<ii<<" "<<jj;

    g.close();
    return 0;
}