Răspuns :
#include <fstream>
using namespace std;
char harta[202][202];
struct paznic{int x, y, d;};
struct ec{int x, y;};
ec elemente[15000];
void adaugavecini(int& k, ec x){
if(harta[x.x+1][x.y] == '-' || harta[x.x+1][x.y] == 'e'){
harta[x.x+1][x.y]='c';
elemente[k].x = x.x+1;
elemente[k].y= x.y;
k++;
}
if(harta[x.x-1][x.y] == '-' || harta[x.x-1][x.y] == 'e'){
harta[x.x-1][x.y]='c';
elemente[k].x = x.x-1;
elemente[k].y= x.y;
k++;
}
if(harta[x.x][x.y+1] == '-' || harta[x.x][x.y+1] == 'e'){
harta[x.x][x.y+1]='c';
elemente[k].x = x.x;
elemente[k].y= x.y+1;
k++;
}
if(harta[x.x][x.y-1] == '-' || harta[x.x][x.y-1] == 'e'){
harta[x.x][x.y-1]='c';
elemente[k].x = x.x;
elemente[k].y= x.y-1;
k++;
}
}
void proc(paznic p){
int d = 0;
if(harta[p.x][p.y]=='#')return;
harta[p.x][p.y] = 'c';
elemente[0].x = p.x;
elemente[0].y = p.y;
int k = 1;
int lk = 0;
while(d < p.d){
int kc = k;
for(int i = lk; i < kc; i++)
adaugavecini(k, elemente[i]);
if(k==kc)break;
lk = kc;
d++;
}
for(int i = 0; i < k; i++){
ec x = elemente[i];
harta[x.x][x.y]='e';
}
}
int main(){
int n,m, p;
ifstream fin("paznici.in");
ofstream fout("paznici.out");
fin >> n >> m >> p;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
fin >> harta[i][j];
}
}
for(int i = 0; i <= n+1; i++){
harta[i][0] = harta[i][m+1] = '#';
}
for(int i = 0; i <= m+1; i++){
harta[0][i] = harta[n+1][i] = '#';
}
for(int i = 0; i < p; i++){
paznic paz;
fin >> paz.x>>paz.y >> paz.d;
proc(paz);
}
fin.close();
int r = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++){
if(harta[i][j] == '-')r++;
}
fout << r;
fout.close();
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.