Pagini recente » Cod sursa (job #2516209) | Cod sursa (job #1066682) | Cod sursa (job #2047057) | Cod sursa (job #722082) | Cod sursa (job #1959772)
#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,ok;
pair<int,int>v[300001],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;
dr = 1;
for( k = 1; k <= n*m; k ++ ){
ok = 0;
for( st = 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 ++ ;
ok = 1;
}
mat[c][d].second ++;
hz[ p ] = 1;
}
}
}
if( ok == 0){
break;
}
}
out << sol + 1;
return 0;
}