Cod sursa(job #1149163)

Utilizator RoxanaBenteaRoxana Bentea RoxanaBentea Data 21 martie 2014 15:18:08
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[103][103],r[103][103],jul[103][103];
int main()
{ifstream f("rj.in");
ofstream g("rj.out");
int n,m,a1,b,e,d,i,j,x,y,tmin;
char c;
f>>n>>m;
for(i=0;i<=m+1;i++)
   a[0][i]=a[n+1][i]=-1;

for(j=0;j<=n+1;j++)
    a[j][0]=a[j][m+1]=-1;


for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        {f.get(c);
        if (c=='\n') f.get(c);
        if (c=='X') a[i][j]=-1;
        if(c==' ') a[i][j]=0;
        if(c=='R') {a[i][j]=0;a1=i;b=j;}
        if(c=='J') {a[i][j]=0;d=i;e=j;}
        }
for(i=0;i<=n+1;i++)
            for(j=0;j<=m+1;j++)
           {r[i][j]=a[i][j];
            jul[i][j]=a[i][j];
            }
r[a1][b]=1;
jul[d][e]=1;
cout<<d<<" "<<e;

int dl[]={-1,0,1,0,-1,1,1,-1};
int dc[]={0,1,0,-1,1,1,-1,-1};
int prim=1;
int ultim=1;

struct celula{int lin,col;} z[31000],w[31000];
z[prim].lin=a1;
z[prim].col=b;
while(prim<=ultim)
    {   celula p=z[prim];
        for(int k=0;k<8;k++)
        {
       int xx=p.lin +dl[k];
       int yy=p.col+dc[k];
        if(r[xx][yy]==0){r[xx][yy]=r[p.lin][p.col]+1;
        ultim++;
        z[ultim].lin=xx;
        z[ultim].col=yy;}
        }
      prim++;}



for(i=1;i<=n;i++)
    { for(j=1;j<=m;j++)
                cout<<r[i][j]<<" ";
      cout<<"\n";
    }


prim=1;
ultim=1;
int xx=0;int yy=0;

w[prim].lin=d;
w[prim].col=e;

while(prim<=ultim)
    { celula p=w[prim];
        for(int k=0;k<8;k++)
    {
        xx=p.lin +dl[k];
        yy=p.col+dc[k];
        if(jul[xx][yy]==0){jul[xx][yy]=jul[p.lin][p.col]+1;
        ultim++;
        w[ultim].lin=xx;
        w[ultim].col=yy;}}
      prim++;}


int min=10000;

for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
     {
         if(r[i][j]==jul[i][j] && r[i][j]!=-1)
          if(r[i][j]<min ){x=i;y=j;min=r[i][j];}
     }

g<<x<<" "<<y<<" "<<min;

    return 0;
}