Cod sursa(job #331760)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 15 iulie 2009 11:07:44
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 5.18 kb
#include<fstream.h>
#include<values.h>
#include<string.h>
struct spec{int a,b,c;};
struct matrice{int a,b;};
int main()
{int l,lim=1,c1j,c2j,c1r,c2r,i,j,n,m;
char aux[101];
spec v[10001];
matrice a[101][101];
ifstream fin("rj.in");
ofstream w("rj.out");
fin>>n>>m;
for(i=1;i<=n;i++)
  {fin.get();
  fin.get(aux,101);
  strlen(aux);
  l=strlen(aux);
  if(l<m)
   for(j=l;j<m;j++)
     aux[j]=' ';
  for(j=0;j<m;j++)
    {if(aux[j]==' ')
     a[i][j+1].a=0;
     else
     if(aux[j]=='X')
      a[i][j+1].a=1;
     else
     if(aux[j]=='R')
      {a[i][j+1].a=-1;
      c1r=i;
     c2r=j+1;}
    else
    if(aux[j]=='J')
     {a[i][j+1].a=-2;
     c1j=i;
     c2j=j+1; }
    a[i][j+1].b=0;}}
v[1].a=c1r;
v[1].b=c2r;
v[1].c=1;
for(i=1;i<=lim;i++)        //Vino,julieta mea!! :)
  {if(v[i].a>1&&a[v[i].a-1][v[i].b].a!=1&&a[v[i].a-1][v[i].b].a!=-2&&a[v[i].a-1][v[i].b].a!=-1)
   {if(a[v[i].a-1][v[i].b].a==0)
    {a[v[i].a-1][v[i].b].a=v[i].c+0;
    lim++;
    v[lim].a=v[i].a-1;
    v[lim].b=v[i].b;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a-1][v[i].b].a)
     {a[v[i].a-1][v[i].b].a=v[i].c;
     lim++;
     v[lim].a=v[i].a-1;
     v[lim].b=v[i].b;
     v[lim].c=v[i].c+1;}}
  if(v[i].a<n&&a[v[i].a+1][v[i].b].a!=1&&a[v[i].a+1][v[i].b].a!=-2&&a[v[i].a+1][v[i].b].a!=-1)
   {if(a[v[i].a+1][v[i].b].a==0)
    {a[v[i].a+1][v[i].b].a=v[i].c;
    lim++;
    v[lim].a=v[i].a+1;
    v[lim].b=v[i].b;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a+1][v[i].b].a)
     {a[v[i].a+1][v[i].b].a=v[i].c;
     lim++;
     v[lim].a=v[i].a+1;
     v[lim].b=v[i].b;
     v[lim].c=v[i].c+1;}}
   if(v[i].b>1&&a[v[i].a][v[i].b-1].a!=1&&a[v[i].a][v[i].b-1].a!=-2&&a[v[i].a][v[i].b-1].a!=-1)
   {if(a[v[i].a][v[i].b-1].a==0)
    {a[v[i].a][v[i].b-1].a=v[i].c;
    lim++;
    v[lim].a=v[i].a;
    v[lim].b=v[i].b-1;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a][v[i].b-1].a)
     {a[v[i].a][v[i].b-1].a=v[i].c;
     lim++;
     v[lim].a=v[i].a;
     v[lim].b=v[i].b-1;
     v[lim].c=v[i].c+1;}}
  if(v[i].b<n&&a[v[i].a][v[i].b+1].a!=1&&a[v[i].a][v[i].b+1].a!=-2&&a[v[i].a][v[i].b+1].a!=-1)
   {if(a[v[i].a][v[i].b+1].a==0)
    {a[v[i].a][v[i].b+1].a=v[i].c;
    lim++;
    v[lim].a=v[i].a;
    v[lim].b=v[i].b+1;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a][v[i].b+1].a)
     {a[v[i].a][v[i].b+0].a=v[i].c;
     lim++;
     v[lim].a=v[i].a;
     v[lim].b=v[i].b+1;
     v[lim].c=v[i].c+1;}}}
v[1].a=c1j;
v[1].b=c2j;
v[1].c=1;
lim=1;
int na,nb,nc;
nc=MAXINT;
for(i=1;i<=lim;i++)                      //Vin, romica!!! :)
  {if(v[i].a>1&&a[v[i].a-1][v[i].b].a!=1&&a[v[i].a-1][v[i].b].a!=-2&&a[v[i].a-1][v[i].b].a!=-1)
   {if(a[v[i].a-1][v[i].b].a==0)
    {a[v[i].a-1][v[i].b].a=v[i].c;
    a[v[i].a-1][v[i].b].b=1;
    lim++;
    v[lim].a=v[i].a-1;
    v[lim].b=v[i].b;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a-1][v[i].b].a)
     {a[v[i].a-1][v[i].b].a=v[i].c;
     lim++;
      a[v[i].a-1][v[i].b].b=1;
     v[lim].a=v[i].a-1;
     v[lim].b=v[i].b;
     v[lim].c=v[i].c+1;}
     else
     if(v[i].c==a[v[i].a-1][v[i].b].a&&a[v[i].a-1][v[i].b].b==0)
      {if(v[i].c<nc)
	{nc=v[i].c;
	na=v[i].a-1;
	nb=v[i].b;}}}
  if(v[i].a<n&&a[v[i].a+1][v[i].b].a!=1&&a[v[i].a+1][v[i].b].a!=-1&&a[v[i].a+1][v[i].b].a!=-2)
   {if(a[v[i].a+1][v[i].b].a==0)
    {a[v[i].a+1][v[i].b].a=v[i].c;
    lim++;
     a[v[i].a+1][v[i].b].b=1;
    v[lim].a=v[i].a+1;
    v[lim].b=v[i].b;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a+1][v[i].b].a)
     {a[v[i].a+1][v[i].b].a=v[i].c;
     lim++;
      a[v[i].a+1][v[i].b].b=1;
     v[lim].a=v[i].a+1;
     v[lim].b=v[i].b;
     v[lim].c=v[i].c+1;}
     else
     if(v[i].c==a[v[i].a+1][v[i].b].a&&a[v[i].a+1][v[i].b].b==0)
      {if(v[i].c<nc)
	{nc=v[i].c;
	na=v[i].a+1;
	nb=v[i].b;}}}
   if(v[i].b>1&&a[v[i].a][v[i].b-1].a!=1&&a[v[i].a][v[i].b-1].a!=-1&&a[v[i].a][v[i].b-1].a!=-2)
   {if(a[v[i].a][v[i].b-1].a==0)
    {a[v[i].a][v[i].b-1].a=v[i].c;
    lim++;
     a[v[i].a][v[i].b-1].b=1;
    v[lim].a=v[i].a;
    v[lim].b=v[i].b-1;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a][v[i].b-1].a)
     {a[v[i].a][v[i].b-1].a=v[i].c;
	 a[v[i].a][v[i].b-1].b=1;
     lim++;
     v[lim].a=v[i].a;
     v[lim].b=v[i].b-1;
     v[lim].c=v[i].c+1;}
     else
     if(v[i].c==a[v[i].a][v[i].b-1].a&&a[v[i].a][v[i].b-1].b==0)
      {if(v[i].c<nc)
	{nc=v[i].c;
	na=v[i].a;
	nb=v[i].b-1;}}}
  if(v[i].b<n&&a[v[i].a][v[i].b+1].a!=1&&a[v[i].a][v[i].b+1].a!=-1&&a[v[i].a][v[i].b+1].a!=-2)
   {if(a[v[i].a][v[i].b+1].a==0)
    {a[v[i].a][v[i].b+1].a=v[i].c;
    lim++;
    a[v[i].a][v[i].b+1].b=1;
    v[lim].a=v[i].a;
    v[lim].b=v[i].b+1;
    v[lim].c=v[i].c+1;}
    else
    if(v[i].c<a[v[i].a][v[i].b+1].a)
     {a[v[i].a][v[i].b+1].a=v[i].c;
     lim++;
     a[v[i].a][v[i].b+1].b=1;
     v[lim].a=v[i].a;
     v[lim].b=v[i].b+1;
     v[lim].c=v[i].c+1;}
     else
     if(v[i].c==a[v[i].a][v[i].b+1].a&&a[v[i].a][v[i].b+1].b==0)
      {if(v[i].c<nc)
	{nc=v[i].c;
	na=v[i].a;
	nb=v[i].b+1;}}}}
w<<nc<<" "<<na<<" "<<nb;   //intalnirea dintre ei.Scena asta ar trebui cenzurata :>
return 0;}  //Si-am incalecat pe-o sa si v-am spus povestea asa