Pagini recente » Cod sursa (job #510319) | Cod sursa (job #1156272) | Cod sursa (job #1354180) | Cod sursa (job #3143912) | Cod sursa (job #1087720)
#include<cstdio>
using namespace std;
int v[100][100],q[10000][2],r[4][2];
int main(){
FILE *in=fopen("rj.in","r"),*out=fopen("rj.out","w");
int n,e,p=0,m,u=1;
char c;
fscanf(in,"%d%d\n",&n,&m);
for(int i=1;i<n+1;i++){
for(int j=1;j<m+1;j++){
fscanf(in,"%c",&c);
switch(c){
case 'X':
v[i][j]=-1;
break;
case ' ':
v[i][j]=0;
break;
case 'J':
v[i][j]=1;
q[0][1]=j;
q[0][0]=i;
break;
case 'R':
r[0][1]=j;
r[0][0]=i;
break;
case '\n':
v[i][j]=0;
break;
}
}
fscanf(in,"\n");
}
for(int i=0;i<=n;i++){
v[i][0]=v[i][n+1]=-1;
}
for(int i=0;i<=m;i++){
v[0][i]=v[m+1][i]=-1;
}
int i,j;
do{
i=q[p][0];
j=q[p][1];
e=v[i][j]+1;
if(v[i+1][j]==0){
q[u][0]=i+1;
q[u][1]=j;
u++;
v[i+1][j]=e;
}
if(v[i][j+1]==0){
q[u][0]=i;
q[u][1]=j+1;
u++;
v[i][j+1]=e;
}
if(v[i-1][j]==0){
q[u][0]=i-1;
q[u][1]=j;
u++;
v[i-1][j]=e;
}
if(v[i][j-1]==0){
q[u][0]=i;
q[u][1]=j-1;
u++;
v[i][j-1]=e;
}
if(v[i+1][j+1]==0){
q[u][0]=i+1;
q[u][1]=j+1;
u++;
v[i+1][j+1]=e;
}
if(v[i+1][j-1]==0){
q[u][0]=i+1;
q[u][1]=j-1;
u++;
v[i+1][j-1]=e;
}
if(v[i-1][j+1]==0){
q[u][0]=i-1;
q[u][1]=j+1;
u++;
v[i-1][j+1]=e;
}
if(v[i-1][j-1]==0){
q[u][0]=i-1;
q[u][1]=j-1;
u++;
v[i-1][j-1]=e;
}
p++;
}
while(p<u);
fprintf(out,"%d",(v[r[0][0]][r[0][1]]+1)/2);
u=1;
p=0;
i=r[v[r[0][0]][r[0][1]]][0];
j=r[v[r[0][0]][r[0][1]]][1];
for(int a=v[r[0][0]][r[0][1]];a>0;a--){
if(v[i+1][j]==a){
q[u][0]=i+1;
q[u][1]=j;
u++;
i++;
}
else if(v[i][j+1]==a){
q[u][0]=i;
q[u][1]=j+1;
u++;
j++;
}
else if(v[i-1][j]==a){
q[u][0]=i-1;
q[u][1]=j;
u++;
i--;
}
else if(v[i][j-1]==a){
q[u][0]=i;
q[u][1]=j-1;
u++;
j--;
}
else if(v[i+1][j+1]==a){
q[u][0]=i+1;
q[u][1]=j+1;
u++;
i++;j++;
}
else if(v[i+1][j-1]==a){
q[u][0]=i+1;
q[u][1]=j-1;
u++;
i++;j--;
}
else if(v[i-1][j+1]==a){
q[u][0]=i-1;
q[u][1]=j+1;
u++;
i--;j++;
}
else if(v[i-1][j-1]==a){
q[u][0]=i-1;
q[u][1]=j-1;
u++;
i--;j--;
}
p++;
}
if(u%2==1){
if(q[u/2][1]>q[u/2+1][1]){
fprintf(out," %d %d",q[u/2+1][0],q[u/2+1][1]);
}
else{
fprintf(out," %d %d",q[u/2][0],q[u/2][1]);
}
}
else{
fprintf(out," %d %d",q[u/2][0],q[u/2][1]);
}
return 0;
}