Pagini recente » Cod sursa (job #1708119) | Cod sursa (job #1087197) | Cod sursa (job #1089247) | Cod sursa (job #1884185) | Cod sursa (job #1401985)
#include <iostream>
#include <fstream>
#include <deque>
const int dx[]={0,0,1,-1};
const int dy[]={1,-1,0,0};
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
deque <int> lx,ly;
int n,m,ma[152][152],s;
void afis()
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
g<<ma[i][j]<<" ";
g<<"\n";
} }
void lee()
{
int ux,uy,xx,yy,ok = 1,x,y,j,ok2,d;
while(ok == 1)
{
ok = 0;
for( j = 0 ; j < lx.size();j++)
{
ok2 = 0;
d = 0;
xx = lx[j];
yy = ly[j];
for(int i = 0; i < 4; i++)
{
ux = xx + dx[i];
uy = yy + dy[i];
if(ma[ux][uy] > 0)
{
ok2++;
if(ma[ux][uy]%m == 0)
x = ma[ux][uy]/m ,y = m ;
else
x = ma[ux][uy]/m +1,y = ma[ux][uy]%m;
if(ma[x][y] == 0)
{
d++;
lx.push_back(ux);
ly.push_back(uy);
s++;
ma[ux][uy] = 0;
ok = 1;
}
}
}
if(ok2 == d)
{
lx.erase(lx.begin()+j);
ly.erase(ly.begin()+j);
}
}
}
}
int main()
{
int i,j,k,d,x,y;
f>>n>>m>>k;
if(k % m != 0)
x = k/m + 1,y = k%m;
else
x = k/m, y = m;
for(i = 1; i <= n;i++)
for(j = 1; j <= m;j++)
f>>ma[i][j];
for(i = 0;i <= n+1; i++)
ma[i][0] = ma[i][m+1] = -1;
for(i = 0; i <= m+1; i++)
ma[0][i] = ma[n+1][i] = -1;
if(ma[x][y]== k)
{
ma[x][y] = 0;
lx.push_back(x);
ly.push_back(y);
lee();
g<<s+1<<" ";
}
else
g<<0;
// afis();
return 0;
}