Cod sursa(job #1546619)

Utilizator ajeccAjechiloae Eugen ajecc Data 8 decembrie 2015 13:48:29
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");

short a, b, m[151][151];
float k;
void citire(), _fill(short x, short y);
bool chei[151*151], marcat[151][151];
short dx[]={0, 0, 1, -1}, dy[]={1, -1, 0, 0};
int sol=0, stop=0;

int main()
{
    citire();
    _fill((short)ceil(k/a), short(k)%b ? short(k)%b : b);
    cout<<sol;

    return 0;
}

void citire()
{
    cin>>a>>b>>k;
    //chei[(int)ceil(k/a)][int(k)%b ? int(k)%b : b]=1;
    chei[int(k)]=1;
    for(short i=1; i<=a; i++)
        for(short j=1; j<=b; j++)
            cin>>m[i][j];
}

void _fill(short x, short y)
{
    stop++;
    if(!marcat[x][y])
    {
        sol++;
        marcat[x][y]=1;
        chei[(x-1)*b+y]=1;
    }
    else if(stop>=151*151)
        return;

    for(int i=0; i<=3; i++)
    {
        if(x+dx[i] && x+dx[i]<=a &&
           y+dy[i] && y+dy[i]<=b &&
           chei[m[x+dx[i]][y+dy[i]]])
                _fill(x+dx[i], y+dy[i]);
    }
}