Cod sursa(job #2145109)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 27 februarie 2018 09:12:58
Problema Castel Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#include <vector>
using namespace std;
struct md
{
    int x,y;
};
int a[152][152];
bool viz[225005];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int main()
{
    freopen("castel.in","r",stdin);
    freopen("castel.out","w",stdout);
    int m,n,k,i,j;
    scanf("%d%d%d",&m,&n,&k);
    for(int i=1;i<=m;i++)
        for(j=1;j<=n;j++)
        scanf("%d",&a[i][j]);
        int x=(k+n-1)/n;
        int y=k%n;
        if(y==0)y=n;
    vector<md>q;
    md temp,temp1;
    temp.x=x;temp.y=y;
    a[x][y]=0;
    q.push_back(temp);
    int cnt=0;
    viz[k]=1;
    cnt=1;
    int r=1;
    while(r)
    {
        r=0;
        int l=q.size(),j;
        for(j=0;j<l;j++)
        for(int i=0;i<4;i++)
        if(a[q[j].x+dx[i]][q[j].y+dy[i]]&&viz[a[q[j].x+dx[i]][q[j].y+dy[i]]])
        {
            q.push_back({q[j].x+dx[i],q[j].y+dy[i]});
            a[q[j].x+dx[i]][q[j].y+dy[i]]=0;
            viz[(q[j].x+dx[i]-1)*n+q[j].y+dy[i]]=1;
            cnt++;
            r=1;
        }
    }
    printf("%d\n",cnt);
    return 0;
}