Cod sursa(job #2374811)

Utilizator CristianSoareSoare Cristian Costantin CristianSoare Data 7 martie 2019 20:36:43
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>
#include <cstring>
using namespace std;ifstream fin ("rj.in");ofstream fout("rj.out");struct pos{int x, y;};pos Coada[105*105];int a[105][105], prim, ultim, n, m, b[105][105], c[105][105];int o[] = {1, 0, -1, 0, 1, -1, 1, -1};int v[] = {0, 1, 0, -1, 1, -1, -1, 1};void LeeR(){int i, j, k;while (prim <= ultim){prim++;i = Coada[prim].x;j = Coada[prim].y;for (k = 0;k < 8;k++){int _i, _j;_i = i+v[k];_j = j+o[k];if (_i > 0 && _j > 0 && _i <= n && j <= m && b[_i][_j] == 0 && a[_i][_j] == 0){ultim++;Coada[ultim].x = _i;Coada[ultim].y = _j;b[_i][_j] = b[i][j]+1;}}}}void LeeJ(){int i, j, k;while (prim <= ultim){prim++;i = Coada[prim].x;j = Coada[prim].y;for (k = 0;k < 8;k++){int _i, _j;_i = i+v[k];_j = j+o[k];if (_i > 0 && _j > 0 && _i <= n && j <= m && c[_i][_j] == 0 && a[_i][_j] == 0){ultim++;Coada[ultim].x = _i;Coada[ultim].y = _j;c[_i][_j] = c[i][j]+1;}}}}int main(){int i, j, Jx, Jy, tmin = 99999, pozx, pozy;char s[105];fin >> n >> m;fin.get();for (i = 1;i <= n;i++){fin.getline(s, sizeof(s));for (j = 1;j <= m;j++){if (s[j-1] == 'X')a[i][j] = -1;else if (s[j-1] == 'R'){a[i][j] = 1;b[i][j] = 1;ultim++;Coada[ultim].x = i;Coada[ultim].y = j;}else if (s[j-1] == 'J'){a[i][j] = 1;b[i][j] = 1;Jx = i;Jy = j;}else a[i][j] = 0;}}LeeR();prim = 0;ultim = 1;Coada[ultim].x = Jx;Coada[ultim].y = Jy;c[Jx][Jy] = 1;LeeJ();for (i = 1;i <= n;i++)for (j = 1;j <= m;j++)if (b[i][j] == c[i][j] && b[i][j] > 1){if (tmin > b[i][j]){tmin = b[i][j];pozx = i;pozy = j;}}fout << tmin << " " << pozx << " " << pozy;return 0;}