Cod sursa(job #239490)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 4 ianuarie 2009 21:28:55
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include<algorithm>
using namespace std;
int n,m,a[101][101],b[101][101];
const int di[8]={-1,0,1,-1,1,-1,0,1},dj[8]={-1,-1,-1,0,0,1,1,1};
void rlee(){
    int i,j,k,pas,ok=1;
    for(pas=1; ok; ++pas){
        ok=0;
        for(i=1; i<=n; ++i)
            for(j=1; j<=m; ++j)
                if(a[i][j]==pas)
                    for(k=0; k<8; ++k)
                        if(!a[i+di[k]][j+dj[k]]){
                            a[i+di[k]][j+dj[k]]=pas+1;
                            ok=1;}}}
void jlee(){
    int i,j,k,pas,ok=1;
    for(pas=1; ok; ++pas){
        ok=0;
        for(i=1; i<=n; ++i)
            for(j=1; j<=m; ++j)
                if(b[i][j]==pas)
                    for(k=0; k<8; ++k)
                        if(!b[i+di[k]][j+dj[k]]){
                            b[i+di[k]][j+dj[k]]=pas+1;
                            ok=1;}}}
void solve(){
    int i,j,pozi,pozj,min=25001;
    char ch;
    scanf("%d%d\n",&n,&m);
    for(i=1; i<=n; ++i)
        for(j=1; j<=m+1; ++j){
            scanf("%c",&ch);
            if(ch=='R')
                a[i][j]=1;
            else if(ch=='J')
                b[i][j]=1;
            else if(ch=='X')
                a[i][j]=b[i][j]=-1;}
    for(i=0; i<n+2; ++i)
        a[0][i]=b[0][i]=a[n+1][i]=b[n+1][i]=-1;
    for(i=0; i<m+1; ++i)
        a[i][0]=b[i][0]=a[i][m+1]=b[i][m+1]=-1;
    rlee();
    jlee();
    for(i=1; i<=n; ++i)
        for(j=1; j<=m; ++j)
            if(a[i][j]>0&&a[i][j]==b[i][j]&&a[i][j]<min){
				min=a[i][j];
                pozi=i;
                pozj=j;}
    printf("%d %d %d",min,pozi,pozj);}
int main(){
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    solve();
    return 0;}