Cod sursa(job #568238)

Utilizator Sm3USmeu Rares Sm3U Data 30 martie 2011 22:38:32
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <stdio.h>

using namespace std;

struct ceva{
    int x;
    int y;
}c[155*155];
int a[155][155];
int b[155][155];
int d[155*155];
int n;
int m;
const int di[10]={-1,0,0,1};
const int dj[10]={0,-1,1,0};

void citire()
{
    int x;
    scanf("%d %d %d",&n,&m,&x);
    int y=1;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
            b[i][j]=y++;
        }
    }
    c[0].y=x%m;
    c[0].x=x/m+1;
    if(!c[0].y)
        c[0].y=m,c[0].x--;
    d[x]=1;


}

void lee()
{
    int s=0;
    int lungime=1;
    int ok=1;
    while(ok)
    {
        ok=0;
        for(int i=0;i<lungime;i++)
        {
            for(int j=0;j<4;j++)
            {
                int x=c[i].x+di[j];
                int y=c[i].y+dj[j];
                if(a[x][y]!=0 && d[a[x][y]]==1)
                {
                    c[lungime].x=x;
                    c[lungime++].y=y;
                    d[b[x][y]]=1;
                    a[x][y]=0;
                    s++;
                    ok=1;
                }

            }
        }
    }
    printf("%d",s);
}

int main()
{
    freopen("castel.in","r",stdin);
    freopen("castel.out","w",stdout);
    citire();
    lee();
    return 0;
}