Pagini recente » Borderou de evaluare (job #977981) | Borderou de evaluare (job #19998) | Borderou de evaluare (job #19993) | Borderou de evaluare (job #2129076) | Cod sursa (job #2501594)
#include <iostream>
#include <fstream>
#include <cstring>
#include <queue>
using namespace std;
int m, n;
char a[110][110];
int b[110][110];
int c[110][110];
struct coord
{
int x;
int y;
};
coord elementMachen(int x, int y)
{
coord aux;
aux.x = x;
aux.y = y;
return aux;
}
queue<coord> qr, qj;
int main()
{
ifstream fin ("rj.in" );
ofstream fout("rj.out");
int di[8]= {-1, 0, 1, -1, 1, -1, 0, 1};
int dj[8]= {-1, -1, -1, 0, 0, 1, 1, 1};
int kr, kj;
bool gatabos = false;
fin >> n >> m;
fin.get();
for(int i=0; i<n; i++)
fin.getline(a[i], 111);
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
{
if(a[i][j] == 'X')
{
b[i][j] = -10;
c[i][j] = -10;
}
if(a[i][j] == ' ')
{
b[i][j] = 0;
c[i][j] = 0;
}
if(a[i][j] == 'R')
{
b[i][j] = 1;
qr.push(elementMachen(i, j));
}
if(a[i][j] == 'J')
{
c[i][j] = 1;
qj.push(elementMachen(i, j));
}
}
while((!qr.empty() && !qj.empty()) && !gatabos)
{
int xc = qr.front().x;
int yc = qr.front().y;
int xcc = qj.front().x;
int ycc = qj.front().y;
qr.pop();
qj.pop();
kr = b[xc][yc];
kj = c[xcc][ycc];
for(int l=0; l<8; l++)
{
if(0<=xc+di[l] && xc+di[l]<n && 0<=yc+dj[l] && yc+dj[l]<m && b[xc+di[l]][yc+dj[l]]==0)
{
cout << "R: " << xc+di[l] << " " << yc+dj[l] << "\n";
b[xc+di[l]][yc+dj[l]] = kr+1;
qr.push(elementMachen(xc+di[l], yc+dj[l]));
}
if(0<=xcc+di[l] && xcc+di[l]<n && 0<=ycc+dj[l] && ycc+dj[l]<m && c[xcc+di[l]][ycc+dj[l]]==0)
{
cout << "J: " << xcc+di[l] << " " << ycc+dj[l] << "\n";
c[xcc+di[l]][ycc+dj[l]] = kj+1;
qj.push(elementMachen(xcc+di[l], ycc+dj[l]));
}
}
}
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
if(b[i][j] == c[i][j] && b[i][j] != -10 && b[i][j] != 0)
{
fout << b[i][j] << " " << i+1 << " " << j+1;
return 0;
}
}
/*
cout << "\n\n\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
cout << b[i][j] << " ";
cout << "\n";
}
cout << "\n\n\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
cout << c[i][j] << " ";
cout << "\n";
}*/
return 0;
}