Cod sursa(job #896383)

Utilizator StexanIarca Stefan Stexan Data 27 februarie 2013 15:28:26
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.94 kb
using namespace std;
#include<iostream>
#include<fstream>

ifstream f("rj.in");
ofstream g("rj.out");

int x[105][105],yl[105][105];
int dx[]={-1,-1,0,1,1,1,0,-1}; int dy[]={0,1,1,1,0,-1,-1,-1};
int k,xu,y,xnou,ynou,r;
int l[10010], c[10010], variantex[8],variantey[8];
char a[105];
int ga;
int main()
{
	int n,m;
	int i,j;
	f>>n>>m;

	for(i=0; i<=n; i++)
		{
			f.getline(a+1, 105);
		for(j=1; j<=m; j++)
		{
			if(a[j]=='X')
				x[i][j]=0;
			if(a[j]==' ')
			{x[i][j]=-1; yl[i][j]=-1;}
			if(a[j]=='R')
			{ x[i][j]=1;
				k++;
				l[k]=i;
				c[k]=j;

			}
			if(a[j]=='J')
			{k++; x[i][j]=2;
				l[k]=i;
				c[k]=j; 			
			}
		}
	}

	k=2; bool ok=false;
		for(i=1; i<=k; i++)
			{
				xu=l[i]; y=c[i];
				for(r=0; r<8; r++)
				{
					xnou = xu+dx[r];
					ynou = y+dy[r];

					if(x[xnou][ynou]==-1)
					{
						x[xnou][ynou]=x[xu][y];
						k++;
						l[k]=xnou;
						c[k]=ynou;
					}
				
					if(x[xnou][ynou]==1||x[xnou][ynou]==2)
					{
						if(x[xu][y]!=x[xnou][ynou])
						{ ok=true; variantex[ga]=xnou; variantey[ga]=ynou; ga++; }
					}

				}
				if(ok==true)
					break;
			}
		int aux;

		for(i=1; i<ga; i++)
		{
			if(variantex[i-1]>variantex[i])
			{
				aux=variantex[i+1];
				variantex[i+1]=variantex[i];
				variantex[i]=aux;

				aux=variantey[i+1];
				variantey[i+1]=variantey[i];
				variantey[i]=aux;
			}

		}i=0;

		while(variantex[i]==variantex[i+1])
		{
			if(variantey[i]>variantey[i+1])
			{
				aux=variantey[i+1];
				variantey[i+1]=variantey[i];
				variantey[i]=aux;
			}
			i++;
		}

		k=1;
			for(i=1; i<=k; i++)
			{
				xu=l[i]; y=c[i];
				for(r=0; r<8; r++)
				{
					xnou = xu+dx[r];
					ynou = y+dy[r];

					if(yl[xnou][ynou]==-1)
					{
						yl[xnou][ynou]=yl[xu][y]+1;
						k++;
						l[k]=xnou;
						c[k]=ynou;
					}

				}
			}
		g<<yl[variantex[0]][variantey[0]]+1<<" "<<variantex[0]<<" "<<variantey[0];

}