Cod sursa(job #1011145)

Utilizator bogdanllazar bogdan bogdanl Data 16 octombrie 2013 12:09:44
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

short int mat[255][255];
short int cx[500*500];
short int cy[500*500];
short const int dx[]={333,0,-1,0,1};
short const int dy[]={333,1,0,-1,0};
short int i,n,j,top=1,na=0,l,ok;


void lee(short int ax[500*255],short int ay[500*255])
{
    short int x,y,k;

    for(i=1;i<=na;i++)
    {
        cx[i]=ax[i];
        cy[i]=ay[i];
       top=i;
    }

    for(i=1;i<=top;i++)
    for(k=1;k<=4;k++)
        {   ok=1;
            x=cx[i]+dx[k];
            y=cy[i]+dy[k];

            if(x>0 && y>0 && x<=n && y<=n)
            if(mat[x][y]==0)
            {for(l=1;l<=na;l++)
                    if(x==ax[l]&&y==ay[l])
                        ok=0;

           if(ok==1)
           {   cx[++top]=x;
                cy[top]=y;
                mat[x][y]=mat[cx[i]][cy[i]]+1;
            }}
        }








    }




int main()
{
    short int ax[500*255], ay[500*255];
    char k;
    ifstream f("muzeu.in");
    ofstream g("muzeu.out");
    f>>n;
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    {
        f>>k;
        if(k=='#')
        mat[i][j]=-2;
        if(k=='P')
        {
                ax[++na]=i;
                ay[na]=j;



        }
    }

    lee(ax,ay);





    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(mat[i][j]==0)
            mat[i][j]=-1;


    for(i=1;i<=na;i++)
    mat[ax[i]][ay[i]]=0;


    for(i=1;i<=n;i++)
{




        for(j=1;j<=n;j++)
            g<<mat[i][j]<<" ";

    g<<endl;
}

    return 0;
}