Cod sursa(job #416584)

Utilizator warcryAlin B warcry Data 12 martie 2010 22:58:50
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.86 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define DIM 101
using namespace std;
int dx[]={-1,1,0,0,-1,1,-1,1};
int dy[]={0,0,-1,1,-1,1,1,-1};
void li(int a[DIM][DIM],int n,int m);
int cond(int a)
{
    if(a>1) return 1;
    return 0;
}
int main()
{
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    char ch;
    int i,j,a[DIM][DIM],b[DIM][DIM],n,m,mina=102,x,y;
    scanf("%d %d",&n,&m);
    scanf("%c",&ch);
    for(i=1;i<=n;++i)
    {
      for(j=1;j<=m;++j)
      {
           scanf("%c",&ch);
           if(ch=='X')
              {a[i][j]=-2;
              b[i][j]=-2;}
              
           else if(ch==' ')
              {a[i][j]=-1;
              b[i][j]=-1;}
              
           else if(ch=='R')
              {a[i][j]=1;
              b[i][j]=-2;}
              
           else if(ch=='J')
              {a[i][j]=-2;
              b[i][j]=1;}
      }
      scanf("%c",&ch);
    }
    
    li(a,n,m);
    li(b,n,m);
    li(b,n,m);

    for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)
      if(a[i][j]>0&&a[i][j]==b[i][j]&&a[i][j]<mina)
      {
           mina=a[i][j];
           x=i;
           y=j;
      }
     
    printf("%d %d %d\n\r",mina,x,y);
    
    return 0;
}

void li(int a[DIM][DIM],int n,int m)
{
     int bula,pas,xx,yy,k,i,j;
     pas=1;
     do
     {
         
         bula=0;
         for(i=1;i<=n;++i)
         for(j=1;j<=m;++j)
         {
            if(a[i][j]==pas)
            {
               for(k=0;k<8;++k)
               {
                       xx=i+dx[k];
                       yy=j+dy[k];
                       if(a[xx][yy]==-1)
                       {
                          a[xx][yy]=pas+1;
                          bula=1;
                       }
               }
            }
         }
     pas++;
     }while(bula==1);
}