Cod sursa(job #700283)

Utilizator seba209Ciurescu Sebastian seba209 Data 1 martie 2012 09:02:57
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#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;
			}
}