Advertisement
a53

paznici

a53
May 4th, 2019
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream fin("paznici.in");
  4. ofstream fout("paznici.out");
  5. int n,m,p;
  6. int a[201][201];
  7. short x[40005],y[40001];
  8. char P[201][201];
  9. const int dx[]={0, 0,1,-1},
  10. dy[]={1,-1,0, 0};
  11.  
  12. void fill(int i,int j,int d)
  13. {
  14. int st,dr;
  15. st=dr=1;
  16. x[1]=i,y[1]=j;
  17. a[i][j]=1;
  18. P[i][j]='*';
  19. while(st<=dr)
  20. {
  21. int i=x[st],j=y[st];
  22. if(a[i][j]<=d)
  23. for(int k=0;k<4;++k)
  24. {
  25. int ii=i+dx[k],jj=j+dy[k];
  26. if(ii>0&&ii<=n&&jj>0&&jj<=m&&P[ii][jj]!='#'&&a[ii][jj]==0)
  27. {
  28. a[ii][jj]=a[i][j]+1;
  29. P[ii][jj]='*';
  30. ++dr;
  31. x[dr]=ii,y[dr]=jj;
  32. }
  33. }
  34. ++st;
  35. }
  36. }
  37.  
  38. void resetare()
  39. {
  40. for(int i=1;i<=n;++i)
  41. for(int j=1;j<=m;++j)
  42. a[i][j]=0;
  43. }
  44.  
  45. int main()
  46. {
  47. fin>>n>>m>>p;
  48. for(int i=1;i<=n;++i)
  49. for(int j=1;j<=m;++j)
  50. fin>>P[i][j];
  51. for (;p;--p)
  52. {
  53. resetare();
  54. int i,j,d;
  55. fin>>i>>j>>d;
  56. if(a[i][j]==0)
  57. fill(i,j,d);
  58. }
  59. int cnt=0;
  60. for(int i=1;i<=n;++i)
  61. for(int j=1;j<=m;++j)
  62. if(P[i][j]=='-'&&a[i][j]==0)
  63. ++cnt;
  64. fout<<cnt;
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement