Cod sursa(job #2403309)

Utilizator iminbluePana Adrian iminblue Data 11 aprilie 2019 14:03:41
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <cmath>
#include <iostream>
#include <cstring>

using namespace std;

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

int n,m,a[1005][1005],x,Map[1005][1005],p=1,u=1,nx,ny,i,i1=1,j,Min,cx,cy;
int dx[]={-1,0,1,1,0,-1,1,-1};
int dy[]={-1,-1,-1,0,1,0,1,1};
char s[101];

struct coada
{
    int x,y;
}c[1000005] ;

void drum (int i,int j,int x)
{
    for (int k=0;k<=7;k++)
    if (Map[i+dx[k]][j+dy[k]]==x) {if (x==Map[cx][cy]/2+1) {g<<i+dx[k]<<" "<<j+dy[k];return;}
    else
        {drum(i+dx[k],j+dy[k],x-1); break;}
    }
}

int main()
{
    f>>n>>m;
    f.get();
    for (i=1;i<=n;i++)

    {f.getline(s,101);
    for (j=0;j<strlen(s);j++){
    if (s[j]=='R') {a[i][j+1]=1; Map[i][j+1]=1; c[1].x=i; c[1].y=j+1;}
    else if(s[j]=='J') {a[i][j+1]=1;  cx=i; cy=j+1;}
    else if (s[j]==' ') a[i][j+1]=1;}
    }



    while (p<=u && Map[cx][cy]%2==0)
    {


        nx=c[p].x;
        ny=c[p].y;
        for (i=0;i<=7;i++)
        {
            nx=c[p].x+dx[i];
            ny=c[p].y+dy[i];
            if (a[nx][ny]==1) {u++; Map[nx][ny]=Map[c[p].x][c[p].y]+1; c[u].x=nx; c[u].y=ny; a[nx][ny]=0;}
        }
        a[c[p].x][c[p].y]=0;
        p++;
    }

    g<<Map[cx][cy]/2+1<<" ";
    drum(cx,cy,Map[cx][cy]-1);

    return 0;
}