Cod sursa(job #990904)

Utilizator TibixbAndrei Tiberiu Tibixb Data 29 august 2013 12:02:06
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include<fstream>
using namespace std;
int n, m, i, j, r1, r2, j11, j2, c1[2][10003], r[103][103], ju[103][103], ic, iv, jc, jv, p1, p2, minim, p, u, d;
char c, a[103][103];
int di[]={1, -1, 0, 0, 1, -1, 1, -1};
int dj[]={0, 0, 1, -1, -1, 1, 1, -1};
FILE *fin= fopen("rj.in","r");
ofstream fout ("rj.out");
int main(){
	minim=9999;
	fscanf(fin,"%d%d%c", &n, &m,&c);
	for(i=1; i<=n; i++){
		for(j=1; j<=n; j++) {
			fscanf(fin,"%c", &a[i][j]);
			if(a[i][j]=='R'){
				r1=i;
				r2=j;
			}
			else{
				if(a[i][j]=='J'){
					j11=i;
					j2=j;
				}
			}
		}
		c = 1;
		do {
			fscanf(fin,"%c", &c);
		} while (c!='\n');
		
		
		
		
		
	}
	r[r1][r2]=1;
	c1[0][1]=r1;
	c1[1][1]=r2;
	p=1; u=1;
	while(p<=u){
		ic=c1[0][p];
		jc=c1[1][p];
		for(d=0; d<=7; d++){
			iv=ic+di[d];
			jv=jc+dj[d];
			if(iv>=1 && iv<=n && jv>=1 && jv<=m && a[iv][jv]!='X' && r[iv][jv]==0){
				u++;
				c1[0][u]=iv;
				c1[1][u]=jv;
				r[iv][jv]=r[ic][jc]+1;
			}
		}
		p++;
	}
	ju[j11][j2]=1;
	c1[0][1]=j11;
	c1[1][1]=j2;
	p=1; u=1;
	while(p<=u){
		ic=c1[0][p];
		jc=c1[1][p];
		for(d=0; d<=7; d++){
			iv=ic+di[d];
			jv=jc+dj[d];
			if(iv>=1 && iv<=n && jv>=1 && jv<=m && a[iv][jv]!='X' && ju[iv][jv]==0){
				u++;
				c1[0][u]=iv;
				c1[1][u]=jv;
				ju[iv][jv]=ju[ic][jc]+1;
			}
		}
		p++;
	}
	for(i=1; i<=n; i++){
		for(j=1; j<=n; j++){
			if(r[i][j]==ju[i][j] && r[i][j]!=0){
				if(r[i][j]<minim){
					minim=r[i][j];
					p1=i;
					p2=j;
				}
			}
		}
	}
	fout<<minim<<" "<<p1<<" "<<p2<<"\n";
return 0;
}