Cod sursa(job #1265126)

Utilizator BaweeLazar Vlad Bawee Data 16 noiembrie 2014 19:14:59
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <cstdio>

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

int n,m,i,j,minn=999;
int lx,cx,ly,cy,l,c,li,ci;
short x[102][102],y[102][102];
char k[102];
void print(int x[102][102])
{
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            fprintf(g,"%d ",x[i][j]);
        fprintf(g,"\n");
    }
    fprintf(g,"\n");
}
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);
}
int main()
{
    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;}
            if(x[i][j+1]=='J')
                {ly=i;cy=j+1;}
            if(x[i][j+1]==' ')
                x[i][j+1]=y[i][j+1]=999;
        }
    }
    jale(x,lx,cx,100);
    jale(y,ly,cy,100);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(x[i][j]>100 and y[i][j]>100)
                if(x[i][j]==y[i][j])
                    if(x[i][j]<minn)
                    {
                        minn=x[i][j];
                        li=i;ci=j;
                    }
    fprintf(g,"%d %d %d\n",minn-100+1,li,ci);
    return 0;
}