Pagini recente » Cod sursa (job #1084630) | Cod sursa (job #2570489) | Cod sursa (job #1846680) | Cod sursa (job #2376755) | Cod sursa (job #1959747)
#include<fstream>
using namespace std;
ifstream in("castel.in");
ofstream out("castel.out");
int dx[5] = { 0,0,0,1,-1}, dy[5] = { 0,1,-1,0,0};
int a,b,c,d,p,m,n,i,j,dr,st,sol,k;
pair<int,int>v[30001],mat[155][155];
int hz[1001];
int main(){
in >> n >> m >> p;
for( i = 1; i <= n; i ++ ){
for( j = 1; j <= m; j ++ ){
in >> mat[i][j].first;
}
}
if( p % m == 0 ){
v[1].first = p/m;
v[1].second = m;
}
else{
v[1].first = p/m +1;
v[1].second = p%m;
}
mat[v[1].first][v[1].second].second = 1;
hz[p] = 1;
for( k = 1; k <= n*m; k ++ ){
for( st = 1, dr = 1; st <= dr; st ++ ){
for( i = 1; i <= 4; i ++ ){
a = v[st].first;
b = v[st].second;
c = a + dx[i];
d = b + dy[i];
if( d != m ){
p = m*(c-1) + d;
}
else{
p = m * c;
}
if( c >= 1 && d >= 1 && c <= n && d <= m && mat[c][d].second <=k && hz[ mat[c][d].first ] == 1 ){
dr ++ ;
v[dr].first = c;
v[dr].second = d;
if( mat[c][d].second == 0 ){
sol ++ ;
}
mat[c][d].second ++;
hz[ p ] = 1;
}
}
}
}
out << sol + 1;
return 0;
}