Cod sursa(job #501876)

Utilizator r0cesStefan Radu r0ces Data 16 noiembrie 2010 22:08:12
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.82 kb
#include<fstream.h>
#include<math.h>
#include<iostream.h>
#include<stdio.h>
typedef struct{
    int x,y;}COADA;
COADA c[1100];
int a[150][150],b[150][150];
int p,u,xv,yv,xn,x1,x2,y2,n,m,i,j,z,t,timp,ok,min,li,co;
    int nn,yy;
    int dx[9],dy[9];
    char car[120],*num1,*num2;
int main()
{
    dx[1]=-1;dx[2]=0;dx[3]=1;dx[4]=0;dx[5]=-1;dx[6]=1;dx[7]=1;dx[8]=-1;
    dy[1]=0;dy[2]=1;dy[3]=0;dy[4]=-1;dy[5]=1;dy[6]=1;dy[7]=-1;dy[8]=-1;
    ifstream fcin("rj.in");
    ofstream fcout("rj.out");
    fcin.getline(car,120);
    num1=strtok(car," ");n=atol(num1);
    num2=strtok(NULL," ");m=atol(num2);
    for(i=1;i<=n;i++)
    {
        fcin.getline(car,120);
        for(j=0;j<=m-1;j++)
        {
             
            if(car[j]=='R')
                {
                    a[i][j+1]=1;
                    x1=i;
                    yy=j+1;
                }
            else if(car[j]=='J')
                {
                    b[i][j+1]=1;
                    x2=i;
                    y2=j+1;
                }
            else if(car[j]=='X'){
                a[i][j+1]=-1;
                b[i][j+1]=-1;
            }
            else{
                a[i][j+1]=0;
                b[i][j+1]=0;
            }
        }
    }
     
        for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cout<<a[i][j]<<" ";
        cout<<"\n";}
    cout<<"\n";
     
	for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cout<<b[i][j]<<" ";
        cout<<"\n";}
    cout<<"\n";
     
    p=u=1;
    c[u].x=x1;c[u].y=yy;
    while(p<=u)
    {
        xv=c[p].x;
        yv=c[p].y;
        for(i=1;i<=8;i++)
        {
            xn=xv+dx[i];
            nn=yv+dy[i];
            if(xv>=1&&xv<=n&&yv>=1&&yv<=m&&a[xn][nn]==0)
            {
                a[xn][nn]=a[xv][yv]+1;
                c[++u].x=xn;c[u].y=nn;
            }
        }
        p++;
    }
     
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cout<<a[i][j]<<" ";
        cout<<"\n";}
    cout<<"\n";
     
    p=u=1;
    c[u].x=x2;c[u].y=y2;
    while(p<=u)
    {
        xv=c[p].x;
        yv=c[p].y;
        for(i=1;i<=8;i++)
        {
            xn=xv+dx[i];
            nn=yv+dy[i];
				if(xv>=1&&xv<=n&&yv>=1&&yv<=m&&b[xn][nn]==0)
            {
                b[xn][nn]=b[xv][yv]+1;
                c[++u].x=xn;c[u].y=nn;
            }
        }
        p++;
    }
     
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cout<<b[i][j]<<" ";
        cout<<"\n";}
     
    li=200;co=200;min=100000;
    for(i=n;i>=1;i--)
        for(j=m;j>=1;j--)
            if(a[i][j]==b[i][j]&&a[i][j]<min&&a[i][j]>0){
                min=a[i][j];
                z=i;
                t=j;
            }
             
     
    fcout<<min<<" "<<z<<" "<<t;
    return 0;
}