Cod sursa(job #860653)

Utilizator bia.liliPoenar Liana bia.lili Data 20 ianuarie 2013 16:02:06
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2 kb
#include<fstream>
using namespace std;

int a[101][101],i,j,q[3][20001],u,p,l[101][101],max,k=0,sir[3][100000],c,d,n,m;
ofstream g("rj.out");
void init()
{ 
     ifstream f("rj.in");
     f>>n>>m;
     char c;
           for(i=1;i<=n;i++)
                      for(j=1;j<=m;j++)
                      {f>>c;
                      if(c==' ')
                      {a[i][j]=1;
                      l[i][j]=-1;
                      }
                      else if(c=='R' || c=='J')
                      {
                           a[i][j]=10;
                           k++;
                           sir[1][k]=i;
                           sir[2][k]=j;}
                           else l[i][j]=-2;}
                           
           f.close();
}



void intr(int c, int d)
{
     u=u+1;
     if(u>20000)
     u=1;
     
     q[1][u]=c;
     q[2][u]=d;
}

void extr(int &c, int &d)
{
     p=p+1;
     if(p>20000)
     p=1;
     
     c=q[1][p];
     d=q[2][p];
}

void lee(int x, int y)
{
     p=0;u=0;
     intr(x,y);
     while(p!=u)
     {extr(x,y);
      
      
      if(x>1)
      if(a[x-1][y]==1)
      if(l[x-1][y]<l[x][y]+1)
      {  l[x-1][y]=l[x][y]+1;
         intr(x-1,y);
         }
         
      if(x<n)
      if(a[x+1][y]==1)
      if(l[x+1][y]<l[x][y]+1)
      {l[x+1][y]=l[x][y]|+1;
       intr(x+1,y);
       }
       
      if(y>1)
      if(a[x][y-1]==1)
      if(l[x][y-1]<l[x][y]+1)
      { l[x][y-1]=l[x][y]+1;
       intr(x,y-1);
       }
       
      if(y<n)
      if(a[x][y+1]==1)
      if(l[x][y+1]<l[x][y]+1)
      {  l[x][y+1]=l[x][y]+1;
         intr(x,y+1);
         }
}
}
void scriere()
{int max,i_max,j_max;
     max=-1;
     for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
        if(l[i][j]>max)
        {max=l[i][j];
        i_max=i;
        j_max=j;
        }
        g<<max;
}

int main()
{
    init();
    for(i=1;i<=k;i++)
    lee(sir[1][i],sir[2][i]);
    scriere();
return 0;}