Cod sursa(job #2918671)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 august 2022 15:05:24
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("rj.in");
ofstream G("rj.out");
string v;
int a[101][101],b[101][101],w[]={0,-1,0,1,-1,1,1,-1},z[]={-1,0,1,0,1,1,-1,-1},n,m,k,l,o,q,i,j;
queue<pair<int,int> > c;
void W(int a[][101],int e,int f)
{
    int i;
    for(a[e][f]=1,c.push(make_pair(e,f));!c.empty();c.pop())
        for(i=0;i<8;++i) {
            e=c.front().first+w[i],f=c.front().second+z[i];
            if(e&&e<=n&&f&&f<=m&&!a[e][f])
                a[e][f]=a[c.front().first][c.front().second]+1,c.push(make_pair(e,f));
        }
}
int main()
{
    for(F>>n>>m,getline(F,v);i<n;++i)
        for(getline(F,v),j=0;j<m;++j)
            if(v[j]=='R')
                o=i+1,q=j+1;
            else if(v[j]=='J')
                k=i+1,l=j+1;
            else if(v[j]=='X')
                a[i+1][j+1]=b[i+1][j+1]=-1;
    for(W(a,o,q),W(b,k,l),k=1e5,i=1;i<n;++i)
        for(j=1;j<m;++j)
            if(a[i][j]==b[i][j]&&k>a[i][j]&&a[i][j]>0)
                k=a[i][j],o=i,q=j;
    return G<<k<<' '<<o<<' '<<q,0;
}