Cod sursa(job #500703)

Utilizator r0cesStefan Radu r0ces Data 12 noiembrie 2010 21:45:39
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.07 kb
#include<fstream.h>
#include<math.h>
#include<iostream.h>
#include<stdio.h>
typedef struct{
	int x,y;}COADA;
COADA c[1100];
int a[150][150],b[150][150];
int p,u,xv,yv,xn,x1,x2,y2,n,m,i,j,z,t,timp,ok,min,li,co;
	int nn,yy;
	int dx[9],dy[9];
	char car[120],*num1,*num2;
int main()
{
	dx[1]=-1;dx[2]=0;dx[3]=1;dx[4]=0;dx[5]=-1;dx[6]=1;dx[7]=1;dx[8]=-1;
	dy[1]=0;dy[2]=1;dy[3]=0;dy[4]=-1;dy[5]=1;dy[6]=1;dy[7]=-1;dy[8]=-1;
	ifstream fcin("rj.in");
	ofstream fcout("rj.out");
	fcin.getline(car,120);
	num1=strtok(car," ");n=atol(num1);
	num2=strtok(NULL," ");m=atol(num2);
	for(i=1;i<=n;i++)
	{
		fcin.getline(car,120);
		for(j=0;j<=m-1;j++)
		{
			
			if(car[j]=='R')
				{
					a[i][j+1]=1;
					x1=i;
					yy=j+1;
			    }
			else if(car[j]=='J')
				{
					b[i][j+1]=1;
					x2=i;
					y2=j+1;
			    }
			else if(car[j]=='X'){
				a[i][j+1]=-1;
				b[i][j+1]=-1;
			}
			else{
				a[i][j+1]=0;
				b[i][j+1]=0;
			}
		}
	}
	
		for(i=1;i<=n;i++){
		for(j=1;j<=m;j++)
			cout<<a[i][j]<<" ";
		cout<<"\n";}
	cout<<"\n";
	
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++)
			cout<<b[i][j]<<" ";
		cout<<"\n";}
	cout<<"\n";
	
	p=u=1;
	c[u].x=x1;c[u].y=yy;
	while(p<=u)
	{
		xv=c[p].x;
		yv=c[p].y;
		for(i=1;i<=8;i++)
		{
			xn=xv+dx[i];
			nn=yv+dy[i];
			if(xv>=1&&xv<=n&&yv>=1&&yv<=n&&a[xn][nn]==0)
			{
				a[xn][nn]=a[xv][yv]+1;
				c[++u].x=xn;c[u].y=nn;
			}
		}
		p++;
	}
	
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++)
			cout<<a[i][j]<<" ";
		cout<<"\n";}
	cout<<"\n";
	
	p=u=1;
	c[u].x=x2;c[u].y=y2;
	while(p<=u)
	{
		xv=c[p].x;
		yv=c[p].y;
		for(i=1;i<=8;i++)
		{
			xn=xv+dx[i];
			nn=yv+dy[i];
			if(xv>=1&&xv<=n&&yv>=1&&yv<=n&&b[xn][nn]==0)
			{
				b[xn][nn]=b[xv][yv]+1;
				c[++u].x=xn;c[u].y=nn;
			}
		}
		p++;
	}
	
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++)
			cout<<b[i][j]<<" ";
		cout<<"\n";}
	
	li=200;co=200;min=200;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(a[i][j]==b[i][j]&&a[i][j]<min&&a[i][j]>0){
				min=a[i][j];
				z=i;
				t=j;
			}
			
	
	fcout<<min<<" "<<z<<" "<<t;
	return 0;
}