Cod sursa(job #1326649)

Utilizator BlackWolfBlackWolf BlackWolf Data 25 ianuarie 2015 19:43:41
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.17 kb
#include <iostream>
#include <cstring>
#include <fstream>
#include <iomanip>

using namespace std;

struct pozitie { int lin,col; };

pozitie c[10002];

int main()
{
    int v[101][101];
    int m,n,i,j,prim,ultim,t;
    char x;
    pozitie J,R,p,ve;
    int dl[]={-1,1,0,0,-1,-1,1,1};
    int dc[]={0,0,1,-1,-1,1,1,-1};

    ifstream f("rj.in");
    ofstream g("rj.out");


    f>>n>>m;

f.get();

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            x=f.get();

            if(j==1 && x=='\n')
            {
                j--;
                continue;
            }

            if(x=='X')
            {
                v[i][j]=-1;
            }

            if(x==' ')
            {
                v[i][j]=0;
            }

            if(x=='R')
            {
                v[i][j]=1;
                R.lin=i;
                R.col=j;
            }

            if(x=='J')
            {
                v[i][j]=0;
                J.lin=i;
                J.col=j;
            }

            if(x=='\n' && j<=m)
            {
              while(j<=m)
                 { v[i][j]=0;j++; }
            }
        }
     }


    for(i=0;i<=m+1;i++)
    {
        v[0][i]=v[n+1][i]=-1;
    }

    for(i=0;i<=n+1;i++)
    {
        v[i][0]=v[i][m+1]=-1;
    }


    prim=ultim=0;
    c[0]=R;

    while(prim<=ultim)
    {
        p=c[prim];
        prim++;

        for(i=1;i<=8;i++)
        {
            ve.lin=p.lin+dl[i];
            ve.col=p.col+dc[i];

            if(v[ve.lin][ve.col]==0)
            {
                v[ve.lin][ve.col]=v[p.lin][p.col]+1;
                c[ultim]=ve;
                ultim++;
            }
        }
    }

    if(v[J.lin][J.col]%2==0)
    {
        t=v[J.lin][J.col]/2;
        g<<t<<" ";
    }

    else{
            t=v[J.lin][J.col]/2+1; g<<t<<" ";
     }

    g<<'\n';


   for(ultim=ultim;ultim!=0;ultim--)
   {
       if(v[c[ultim].lin][c[ultim].col]==t)
       {
           J.lin=c[ultim].lin;
           J.col=c[ultim].col;
           break;
       }
   }


    g<<J.lin<<" "<<J.col;

    g<<'\n';

    return 0;
}