Cod sursa(job #331363)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 13 iulie 2009 20:14:02
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 4.42 kb
#include<fstream.h>
#include<values.h>
struct spec{int a,b,c;};
int main()
{int lim=1,c1j,c2j,c1r,c2r,i,j,n,m;
char aux[101];
spec v[101];
char a[101][101];
ifstream q("rj.in");
ofstream w("rj.out");
q>>n>>m;
for(i=1;i<=n;i++)
  {q.get();
  q.get(aux,101);
  for(j=0;j<m;j++)
    a[i][j+1]=aux[j];}
for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
    {if(a[i][j]=='R')
     {c1r=i;
     c2r=j;}
    if(a[i][j]=='J')
     {c1j=i;
     c2j=j;}}
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]!='X'&&a[v[i].a-1][v[i].b]!='J')
   {if(a[v[i].a-1][v[i].b]==' ')
    {a[v[i].a-1][v[i].b]=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]-'0')
     {a[v[i].a-1][v[i].b]=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;}}
  if(v[i].a<n&&a[v[i].a+1][v[i].b]!='X'&&a[v[i].a+1][v[i].b]!='J')
   {if(a[v[i].a+1][v[i].b]==' ')
    {a[v[i].a+1][v[i].b]=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]-'0')
     {a[v[i].a+1][v[i].b]=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;}}
   if(v[i].b>1&&a[v[i].a][v[i].b-1]!='X'&&a[v[i].a][v[i].b-1]!='J')
   {if(a[v[i].a][v[i].b-1]==' ')
    {a[v[i].a][v[i].b-1]=v[i].c+'0';
    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]-'0')
     {a[v[i].a][v[i].b-1]=v[i].c+'0';
     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]!='X'&&a[v[i].a][v[i].b+1]!='J')
   {if(a[v[i].a][v[i].b+1]==' ')
    {a[v[i].a][v[i].b+1]=v[i].c+'0';
    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]-'0')
     {a[v[i].a][v[i].b+0]=v[i].c+'0';
     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]!='X'&&a[v[i].a-1][v[i].b]!='J')
   {if(a[v[i].a-1][v[i].b]==' ')
    {a[v[i].a-1][v[i].b]=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]-'0')
     {a[v[i].a-1][v[i].b]=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]-'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]!='X'&&a[v[i].a+1][v[i].b]!='J')
   {if(a[v[i].a+1][v[i].b]==' ')
    {a[v[i].a+1][v[i].b]=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]-'0')
     {a[v[i].a+1][v[i].b]=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+1==a[v[i].a+1][v[i].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]!='X'&&a[v[i].a][v[i].b-1]!='J')
   {if(a[v[i].a][v[i].b-1]==' ')
    {a[v[i].a][v[i].b-1]=v[i].c+'0';
    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]-'0')
     {a[v[i].a][v[i].b-1]=v[i].c+'0';
     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+1==a[v[i].a][v[i].b-1]-'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]!='X'&&a[v[i].a][v[i].b+1]!='J')
   {if(a[v[i].a][v[i].b+1]==' ')
    {a[v[i].a][v[i].b+1]=v[i].c+'0';
    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]-'0')
     {a[v[i].a][v[i].b+1]=v[i].c+'0';
     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+1==a[v[i].a][v[i].b+1]-'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