Pagini recente » Cod sursa (job #1268097) | Cod sursa (job #3148540) | Cod sursa (job #2426949) | Cod sursa (job #454440) | Cod sursa (job #1322568)
#include <iostream>
#include <fstream>
#include <cstring>
#include <iomanip>
using namespace std;
struct coords
{
int x;
int y;
};
coords r_ps, j_ps, C1[100], C2[100], p_r, p_j, v_r, v_j;
int prim_r = 0, ultim_r = 0, prim_j = 0, ultim_j = 0;
int nrDir = 4;
int dl[] = {-1,0,1,0};
int dc[] = {0,1,0,-1};
int m1[50][50] = {};
int m2[50][50] = {};
void afiseaza_lc(int pasi_min_unu)
{
ifstream read("rj.in");
ofstream write("rj.out");
int a, b;
read >> a >> b;
for(int i = 0; i < a; i++)
for(int j = 0; j < b; j++)
{
if(m1[i][j] == pasi_min_unu)
{
write<<pasi_min_unu<< " " <<i + 2<<" "<<j + 1<<endl;
}
}
}
int main()
{
p_r.x = 0;
p_r.y = 0;
p_j.x = 0;
p_j.y = 0;
v_r.x = 0;
v_r.y = 0;
v_j.x = 0;
v_j.y = 0;
r_ps.x = 0;
r_ps.y = 0;
j_ps.x = 4;
j_ps.y = 2;
C1[0] = r_ps;
C2[0] = j_ps;
ifstream read("rj.in");
ofstream write("rj.out");
int a, b;
read >> a >> b;
char sir[a][b];
for(int i = 0; i < a; i++)
for(int j = 0; j < b; j++)
sir[i][j] = ' ';
ifstream f("rj.in");
f >> a;
char temp[100];
f.getline(temp, 100);
for(int i=0;i<a;i++)
{
f.getline(temp,100);
for(int j=0;j<b;j++)
{
if(temp[j]==' ')
{
m1[i][j]=0;
m2[i][j]=0;
}else
if(temp[j]=='X')
{
m1[i][j]=-1;
m2[i][j]=-1;
}else
if(temp[j]=='R')
{
m1[i][j]=1;
m2[i][j]=0;
}else
if(temp[j]=='J')
{
m2[i][j]=1;
m1[i][j]=0;
}
}
}
while (prim_r <= ultim_r && prim_j <= ultim_j && m1[p_r.x][p_r.y] != m2[p_j.x][p_r.y])
{
p_r = C1[prim_r];
p_j = C2[prim_j];
prim_r++;
prim_j++;
for(int k = 0; k < nrDir; k++)
{
v_r.x = p_r.x + dl[k];
v_r.y = p_r.y + dc[k];
v_j.x = p_j.x + dl[k];
v_j.y = p_j.y + dc[k];
if(m1[v_r.x][v_r.y] == 0)
{
m1[v_r.x][v_r.y] = m1[p_r.x][p_r.y] + 1;
ultim_r++;
C1[ultim_r] = v_r;
}
if(m2[v_j.x][v_j.y] == 0)
{
m2[v_j.x][v_j.y] = m2[p_j.x][p_j.y] + 1;
ultim_j++;
C2[ultim_j] = v_j;
}
}
}
//write<<m1[p_r.x][p_r.y]<< " ";
afiseaza_lc(m1[p_r.x][p_r.y]);
/*
for(int i =0; i < a; i++)
{
for(int j = 0; j < b; j++)
write<<setw(3) << m1[i][j];
write << endl;
}
write<<endl<<endl;
for(int i =0; i < a; i++)
{
for(int j = 0; j < b; j++)
write << setw(3) << m2[i][j];
write << endl;
}
*/
}