Cod sursa(job #1854792)

Utilizator bogdangvrBogdan Gavril bogdangvr Data 23 ianuarie 2017 11:30:44
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
int a[104][104],n,m,d,linv,colv,rez,x,p,u,i,j,lin,col,linJ,colJ,nr,nr1;
char b[104];
struct elem {
    int lin;
    int col;
    int provenienta;
};

elem c[10004];
int di[] = {-1,0,0,1};
int dj[] = {0,-1,1,0};


int main () {
    fin>>n>>m;
    for (i=1;i<=n;i++){
        fin.get();
        fin.get(b,100);
        for (int j=0;j<=m-1;j++){
            if (b[j]==' '){
                a[i][j+1]=0;
            }
            if (b[j]=='X'){
                a[i][j+1]=-1;
            }
            if (b[j]=='R'){
                a[i][j+1]=0;
                c[1].lin=i;
                c[1].col=j+1;
            }
            if (b[j]=='J'){
                a[i][j+1]=0;
                linJ=i;
                colJ=j+1;
            }
        }
    }
    p = 1;
    u = 1;
    while (p<=u) {
        x=a[c[p].lin][c[p].col];
        for (d = 0; d<=3; d++) {
            linv = c[p].lin + di[d];
            colv = c[p].col + dj[d];
            if (a[linv][colv]==0&&linv<=n&&linv>=1&&colv>=1&&colv<=m){
                u++;
                c[u].lin=linv;
                c[u].col=colv;
                c[u].provenienta=p;
                a[linv][colv]=x+1;
                if (linv==linJ&&colv==colJ){
                    p=u+1;
                    break;
                }
            }
        }
        p++;
    }
    nr=a[c[u].lin][c[u].col];
    if (nr%2==0)
        fout<<nr/2<<" ";
    else
        fout<<nr/2+1;
    if (nr%2==0)
        nr=nr/2;
    else
        nr=nr/2+1;
    while (nr!=0){
        u=c[u].provenienta;
        nr--;
    }

    fout<<c[u].lin<<" "<<c[u].col;
    return 0;
}