Pagini recente » Cod sursa (job #729383) | Cod sursa (job #515193) | Cod sursa (job #3271450) | Borderou de evaluare (job #2582912) | Cod sursa (job #700283)
Cod sursa(job #700283)
#include<fstream>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
struct comp
{
int lin,col;
};
int t,q,a,b,x,y,i,p,k,dl[]={-1,-1,0,1,1,1,0,-1},dc[]={0,1,1,1,0,-1,-1,-1},val,j,yi,xf,xi,yf,h[101][101],w[101][101],g[4],sw;
char m[101][101];
comp c[500],c1[500];
int main()
{
in>>t>>q;
in.get();
while(in.getline(m[i],101))
i++;
for(i=0;i<t;i++)
for(j=0;j<q;j++)
if(m[i][j]=='X')
h[i][j]=w[i][j]=-1;
else
if(m[i][j]=='R'||m[i][j]=='J')
{
h[i][j]=w[i][j]=0;
g[k]=i;
k++;
g[k]=j;
k++;
}
c[1].lin=xi=g[0];
c[1].col=yi=g[1];
x=1;y=1;
while(x<=y)
{ val=h[c[x].lin][c[x].col];
for(i=0;i<=7;i++)
{ a=c[x].lin+dl[i];
b=c[x].col+dc[i];
if(!((xi==a&&yi==b)||h[a][b]>0)&&(a>=0&&a<=t&&b>=0&&b<=q)&&h[a][b]<=val&&h[a][b]!=-1)
{ h[a][b]=val+1;
y++;
c[y].lin=a;
c[y].col=b;
}
}
x++;
}
c[1].lin=xi=g[2];
c[1].col=yi=g[3];
x=1;y=1;
while(x<=y)
{ val=w[c[x].lin][c[x].col];
for(i=0;i<=7;i++)
{ a=c[x].lin+dl[i];
b=c[x].col+dc[i];
if(!((xi==a&&yi==b)||w[a][b]>0)&&(a>=0&&a<=t&&b>=0&&b<=q)&&w[a][b]<=val&&w[a][b]!=-1)
{ w[a][b]=val+1;
y++;
c[y].lin=a;
c[y].col=b;
}
}
x++;
}
/*
for(i=0;i<t;i++)
{ for(j=0;j<q;j++)
out<<h[i][j]<<" ";
out<<'\n';
}
out<<'\n';
for(i=0;i<t;i++)
{ for(j=0;j<q;j++)
out<<w[i][j]<<" ";
out<<'\n';
}
out<<'\n';
*/
for(i=0;i<t;i++)
for(j=0;j<q&&sw!=1;j++)
if(h[i][j]==w[i][j]&&h[i][j]!=-1&&w[i][j]!=-1)
{
out<<i+1<<" "<<j+1<<" ";
out<<h[i][j]+1<<" ";
sw=1;
}
}