Cod sursa(job #1138111)

Utilizator Barcau_EmanuelBarcau Emanuel Barcau_Emanuel Data 9 martie 2014 15:37:32
Problema Castel Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<fstream>
#include<map>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int n,m,i,j,k,dr,nrel,x,y,xx,yy,nr,l,ok;
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
map<int,bool>b;
map<int,int>q[2];

struct pie{
int x,y,ver;
}a[155][155];

int ver(int x,int y)
{
    if(x>=1&&x<=n&&y>=1&&y<=m) return 1;
    return 0;
}

int main()
{
    f>>n>>m>>k;
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {
        f>>a[i][j].x;
        nr++;
        a[i][j].y=nr;
        if(nr==k)
        {
            dr++;
            q[0][dr]=i;
            q[1][dr]=j;
            b[nr]=1;
            a[i][j].ver=1;
            nrel++;
        }
    }

    ok=1;
    while(ok==1)
    {
        ok=0;
        for(j=1;j<=dr;j++)
        {
          x=q[0][j];
          y=q[1][j];
          for(i=0;i<4;i++)
           {
             xx=x+dx[i];
             yy=y+dy[i];
             if(ver(xx,yy)==1)
              if(a[xx][yy].ver==0&&b[a[xx][yy].x]==1)
               {
                 dr++;
                 q[0][dr]=xx;
                 q[1][dr]=yy;
                 b[a[xx][yy].y]=1;
                 a[xx][yy].ver=1;
                 nrel++;
                 ok=1;
               }
           }
      }
    }

    g<<nrel;
 return 0;
}