Cod sursa(job #857415)

Utilizator svladScurtu Vlad svlad Data 17 ianuarie 2013 20:08:34
Problema Castel Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
using namespace std;
int a[155][155],b[155][155],k[22550],n,m;
typedef struct{int x,y;} PUNCT;
PUNCT c[22550];
int dx[]={-1,0,0,1};
int dy[]={0,1,-1,0};
ifstream f("castel.in");
ofstream g("castel.out");
int inter(int x,int y)
{
    if(x>=1&&x<=n&&y>=1&&y<=m) return 1;
    return 0;
}
void afis()
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++) g<<a[i][j]<<" ";
        g<<"\n";
    }
    g<<"\n";
}
int main()
{
    int i,j,cnt=0,u,OK,room,xv,yv;
    f>>n>>m>>room;
    u=1;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            f>>a[i][j];
            b[i][j]=++cnt;
            if(b[i][j]==room) c[u].x=i,c[u].y=j,a[i][j]=0;
        }
    }
    k[room]=1;
    OK=1;
    while(OK==1)
    {   OK=0;
        for(i=u;i>=1;i--)
        {
            for(j=0;j<=3;j++)
            {
                xv=dx[j]+c[i].x;
                yv=dy[j]+c[i].y;
                if(k[a[xv][yv]]==1&&inter(xv,yv)&&a[xv][yv]!=0) c[++u].x=xv,c[u].y=yv,OK=1,k[b[xv][yv]]=1,a[xv][yv]=0;
            }
        }
    }
    g<<u;
    f.close();
    g.close();
    return 0;
}