Cod sursa(job #2150685)

Utilizator Gl0WCula Stefan Gl0W Data 3 martie 2018 18:31:30
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <fstream>

using namespace std;

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

char s[103];
int n, m, v[104][104], ri, rj, ji, jj, c1[2][10004], p1, u1, ic, jc, iv, jv, c2[2][10004], w[104][104], p2, u2, poz1 = 300, poz2 = 300, nr, sol;
int d1[] = {-1, 1, 0, 0, 1, -1, -1, 1};
int d2[] = {0, 0, -1, 1, 1, 1, -1, -1};
int main()
{
    fin>>n>>m;
    for(int i = 0; i <= n; i++){
        fin.getline(s, 103);
        for(int j = 0; j < m; j++){
            if(s[j] == ' '){
                v[i][j + 1] = 0;
                w[i][j + 1] = 0;
            }
            if(s[j] == 'X'){
                v[i][j + 1] = -1;
                w[i][j + 1] = -1;
            }
            if(s[j] == 'R'){
                v[i][j + 1] = 1;
                ri = i;
                rj = j + 1;
            }
            if(s[j] == 'J'){
                w[i][j + 1] = 1;
                ji = i;
                jj = j + 1;
            }
        }

    }
    c1[0][1] = ri;
    c1[1][1] = rj;
    p1 = 1; u1 = 1;
    while(p1 <= u1){
        ic = c1[0][p1];
        jc = c1[1][p1];
        for(int d = 0; d <= 7; d++){
            iv = ic + d1[d];
            jv = jc + d2[d];
            if(iv >= 1 && iv <= n && jv >= 1 && jv <= m && v[iv][jv] == 0){
                u1++;
                c1[0][u1] = iv;
                c1[1][u1] = jv;
                v[iv][jv] = 1 + v[ic][jc];
                if(iv == ji && jv == jj){
                    p1 = u1 + 100;
                }
            }
        }
        p1++;
    }
    if(v[ji][jj] % 2 == 1){
        nr = (v[ji][jj] / 2 )+ 1;
    }
    else{
        nr = v[ji][jj] / 2;
    }
    for(int i = 1; i <= u1; i++){
        if(nr == v[c1[0][i]][c1[1][i]]){
            sol = v[c1[0][i]][c1[1][i]];
            poz1 = min(poz1, c1[0][i]);
            poz2 = min(poz2, c1[1][i]);
        }
    }
    fout<<sol<<" "<<poz1<<" "<<poz2;
    return 0;
}