Cod sursa(job #80686)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 29 august 2007 12:56:09
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>
struct matr{
long int a[102][102];
};
matr O,R1,J1,R2,J2,*RI,*RF,*JI,*JF,*AUX;
long int t,m,n,i,j,k,dx[10],dy[10],rr,jj;
char p[110],*pp;
int main()
{
    FILE *f,*g;f=fopen("rj.in","r");g=fopen("rj.out","w");
    fscanf(f,"%ld%ld",&m,&n);
    dx[0]=-1;dx[1]=-1;dx[2]=-1;dx[3]=0;dx[4]=0;dx[5]=1;dx[6]=1;dx[7]=1;
    dy[0]=-1;dy[1]=0;dy[2]=1;dy[3]=-1;dy[4]=1;dy[5]=-1;dy[6]=0;dy[7]=1;
    pp=&p[0];fgets(pp,102,f);
    for(i=1;i<=m;i++)
     { fgets(pp,102,f);
	for(j=1;j<=n;j++)
	{ if(p[j-1]=='X'){O.a[i][j]=1;}
			   else if(p[j-1]=='R'){R1.a[i][j]=1;}
			   else if(p[j-1]=='J'){J1.a[i][j]=1;}
	}
     }
    RI=&R1;RF=&R2;JI=&J1;JF=&J2;
    for(t=2;;t++)
    {
	for(i=1;i<=m;i++)
	 for(j=1;j<=n;j++)
	  if(!O.a[i][j])
	   {      rr=0;
		  for(k=0;k<=7;k++)
		   rr=RI->a[i+dx[k]][j+dy[k]]|rr;
		  RF->a[i][j]=rr;
		  jj=0;
		  for(k=0;k<=7;k++)
		   jj=JI->a[i+dx[k]][j+dy[k]]|jj;
		  JF->a[i][j]=jj;
		  if(rr&jj)
		   { fprintf(g,"%ld %ld %ld",t,i,j);
		     fcloseall();
		     return 0;
		   }
	   }
	AUX=RI;RI=RF;RF=AUX;
	AUX=JI;JI=JF;JF=AUX;
    }
}