Cod sursa(job #331479)

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