Cod sursa(job #336840)

Utilizator MKLOLDragos Ristache MKLOL Data 1 august 2009 18:12:52
Problema Suma divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
struct lee{
short a,b;
};

lee u[62510];
int dr=1,st,N,S,v[251][251],dx[5]={0,1,-1,0,0},dy[5]={0,0,0,1,-1};
char mar;
int ver(int AA,int BB)
{
    if(AA>N||AA<1)
    return 0;
    if(BB>N||BB<1)
    return 0;
    if(v[AA][BB]==0)
    return 1;
    return 0;


}
void calc(int NR)
{
for(int i=1;i<=4;++i)
{
    if(ver(u[NR].a+dx[i],u[NR].b+dy[i]))
    {
        u[dr].a=u[NR].a+dx[i];
        u[dr].b=u[NR].b+dy[i];
        v[u[dr].a][u[dr].b]=v[u[NR].a][u[NR].b]+1;
        ++dr;
    }

}


}
int main()
{
freopen("muzeu.in","r",stdin);
freopen("muzeu.out","w",stdout);
scanf("%d\n",&N);
for(int i=1;i<=N;++i)
    {
        for(int j=1;j<=N;++j)
        {
        scanf("%c",&mar);
        if(mar=='#')
        v[i][j]=-1;
        else if(mar=='P')
        {
        v[i][j]=1;
        u[dr].a=i;
        u[dr].b=j;
        ++dr;
        }
        }
    scanf("\n");
    }
    for(st=0;st<dr;++st)
    {
        calc(st);
    }
    for(int i=1;i<=N;++i)
        {
                for(int j=1;j<=N;++j)
                    printf("%d ",v[i][j]-1);
        printf("\n");
        }

}