Cod sursa(job #1998840)

Utilizator lupulescu2001Lupulescu Vlad lupulescu2001 Data 9 iulie 2017 12:59:03
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.41 kb
#include<fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[101][101];
pair <int,int> coada[10003];
int main()
{
    int i,j,n,m,lin[9]= {0,0,0,1,-1,1,-1,1,-1},col[9]= {0,1,-1,0,0,1,1,-1,-1},k=1,l=3,raspuns1,raspuns2,ok=0,raspuns3;
    char c;
    fin>>n>>m;
    fin.get(c);
    for(i=1; i<=n; i++)
        {for(j=1; j<=m+1; j++)
        {
            fin.get(c);
            if(c!='\n')
            if(c=='X')
                a[i][j]=-1;
                else
            if(c=='R')
            {
                coada[1].first=i;
                coada[1].second=j;
            }
            else if(c=='J')
            {
                coada[2].first=i;
                coada[2].second=j;
                a[i][j]=10001;
            }
            if(c=='\n')
                break;
        }
        }
        for(i=1;i<=n;i++)
        {for(j=1;j<=m;j++)
            fout<<a[i][j]<<" ";
            fout<<'\n';
        }
    for(j=0; j<=m+1; j++)
    {
        a[0][j]=-1;
        a[n+1][j]=-1;
    }
    for(i=0; i<=n+1; i++)
    {
        a[i][0]=-1;
        a[i][m+1]=-1;
    }
    while(k<=l)
    {
        for(i=1; i<=8; i++)
        {
            if(a[coada[k].first+lin[i]][coada[k].second+col[i]]>10000 && a[coada[k].first][coada[k].second]<10000)
            {
                raspuns1=coada[k].first+lin[i];
                raspuns2=coada[k].second+col[i];
                raspuns3=a[coada[k].first][coada[k].second]+2;
                ok=1;
                break;
            }
            else if(a[coada[k].first+lin[i]][coada[k].second+col[i]]<10000 && a[coada[k].first][coada[k].second]>10000 && a[coada[k].first+lin[i]][coada[k].second+col[i]]>0)
            {
                raspuns1=coada[k].first+lin[i];
                raspuns2=coada[k].second+col[i];
                raspuns3=a[coada[k].first][coada[k].second]-9999;
                ok=1;
                break;
            }
            else if(a[coada[k].first+lin[i]][coada[k].second+col[i]]==0)
            {
                a[coada[k].first+lin[i]][coada[k].second+col[i]]=a[coada[k].first][coada[k].second]+1;
                coada[l].first=coada[k].first+lin[i];
                coada[l].second=coada[k].second+col[i];
                l++;
            }
        }
        if(ok==1)
            break;
        k++;
    }
    fout<<raspuns3<<" "<<raspuns1<<" "<<raspuns2;
}