Cod sursa(job #1266205)

Utilizator BaweeLazar Vlad Bawee Data 18 noiembrie 2014 14:46:57
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
#include <cstdio>

FILE*f=fopen("rj.in","r");
FILE*g=fopen("rj.out","w");

short n,m,i,j,mn=9999;
short lx,cx,ly,cy,l,c,li,ci;
short x[102][102],y[102][102];
void citire()
{
    char k[102];
    fscanf(f,"%d%d",&n,&m);
    fgets(k,2,f);
    for(i=1;i<=n;i++)
    {
        fgets(k,m+2,f);
        for(j=0;j<m;j++)
        {
            x[i][j+1]=y[i][j+1]=k[j];
            if(x[i][j+1]=='R')
                {lx=i;cx=j+1;}
            else if(x[i][j+1]=='J')
                {ly=i;cy=j+1;}
            else if(x[i][j+1]==' ')
                x[i][j+1]=y[i][j+1]=9999;
            else if(x[i][j+1]=='X')
                x[i][j+1]=y[i][j+1]=-1;
        }
    }
}
void bord()
{

    for(i=0;i<=n+1;i++)
        x[i][0]=x[i][m+1]=y[i][0]=y[i][m+1]=-1;
    for(i=0;i<=m+1;i++)
        x[0][i]=x[n+1][i]=y[0][i]=y[n+1][i]=-1;
}
void jale(short a[102][102],int l,int c,int val)
{
    a[l][c]=val;
    if(a[l+1][c]>=a[l][c]+1) jale(a,l+1,c,val+1);
    if(a[l-1][c]>=a[l][c]+1) jale(a,l-1,c,val+1);
    if(a[l][c+1]>=a[l][c]+1) jale(a,l,c+1,val+1);
    if(a[l][c-1]>=a[l][c]+1) jale(a,l,c-1,val+1);
    if(a[l+1][c+1]>=a[l][c]+1) jale(a,l+1,c+1,val+1);
    if(a[l+1][c-1]>=a[l][c]+1) jale(a,l+1,c-1,val+1);
    if(a[l-1][c+1]>=a[l][c]+1) jale(a,l-1,c+1,val+1);
    if(a[l-1][c-1]>=a[l][c]+1) jale(a,l-1,c-1,val+1);
}
void mini()
{
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            if(x[i][j]>0 and x[i][j]==y[i][j] and x[i][j]<mn)
            {
                mn=x[i][j];
                li=i;
                ci=j;
                fprintf(g,"%d %d %d\n",mn,li,ci);
            }
        }
}
void out(short x[102][102])
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            fprintf(g,"%4d ",x[i][j]);
    fprintf(g,"\n");
    }
    fprintf(g,"\n");
}
int main()
{
    citire();
    jale(x,lx,cx,1);
    jale(y,ly,cy,1);
    mini();
    return 0;
}