Cod sursa(job #1841218)

Utilizator catalin.brz98Catalin Breaz FMI catalin.brz98 Data 5 ianuarie 2017 14:05:49
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.25 kb
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
int ju[102][102],bi[102][102],b1,b2,j1,j2;
void fille(int a[102][102],int n,int m,int x,int y)
{
    if(x<n && (a[x+1][y]==0 || a[x+1][y]>a[x][y]+1))
    {
        a[x+1][y]=a[x][y]+1;
        fille(a,n,m,x+1,y);
    }
    if(y<m && (a[x][y+1]==0 || a[x][y+1]>a[x][y]+1))
    {
        a[x][y+1]=a[x][y]+1;
        fille(a,n,m,x,y+1);
    }
    if(x>1 && (a[x-1][y]==0 || a[x-1][y]>a[x][y]+1))
    {
        a[x-1][y]=a[x][y]+1;
        fille(a,n,m,x-1,y);
    }
    if(y>1 && (a[x][y-1]==0 || a[x][y-1]>a[x][y]+1))
    {
        a[x][y-1]=a[x][y]+1;
        fille(a,n,m,x,y-1);
    }
    if(x<n && y<m && (a[x+1][y+1]==0 || a[x+1][y+1]>a[x][y]+1))
    {
        a[x+1][y+1]=a[x][y]+1;
        fille(a,n,m,x+1,y+1);
    }
    if(x<n && y>1 && (a[x+1][y-1]==0 || a[x+1][y-1]>a[x][y]+1))
    {
        a[x+1][y-1]=a[x][y]+1;
        fille(a,n,m,x+1,y-1);
    }
    if(x>1 && y<m && (a[x-1][y+1]==0 || a[x-1][y+1]>a[x][y]+1))
    {
        a[x-1][y+1]=a[x][y]+1;
        fille(a,n,m,x-1,y+1);
    }
    if(x>1 && y>1 && (a[x-1][y-1]==0 || a[x-1][y-1]>a[x][y]+1))
    {
        a[x-1][y-1]=a[x][y]+1;
        fille(a,n,m,x-1,y-1);
    }
}
void citire(int &n,int &m)
{
    ifstream f("rj.in");
    char c;
    f>>n>>m;
    f.get();
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            f.get(c);
            if(c=='X')
                bi[i][j]=ju[i][j]=-1;
            if(c=='R')
            {
                bi[i][j]=1;
                ju[i][j]=-1;
                b1=i;
                b2=j;
            }
            if(c=='J')
            {
                ju[i][j]=1;
                bi[i][j]=-1;
                j1=i;
                j2=j;
            }
        }
        f.get();
    }
}
int main()
{
    int a[101][101],n,m,i,j,k1,k2,maxi=12000,SarmalutaUcigasa;
    citire(n,m);
    fille(bi,n,m,b1,b2);
    fille(ju,n,m,j1,j2);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(bi[i][j]==ju[i][j] && bi[i][j]>0 && bi[i][j]<maxi)
        {
            maxi=bi[i][j];
            k1=i;
            k2=j;
        }
    ofstream g("rj.out");
    g<<maxi<<" "<<k1<<" "<<k2;
    return 0;
}