Advertisement
a53

Pereti

a53
Oct 27th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include <fstream>
  2. #define Nmax 102
  3. using namespace std;
  4. int a[Nmax][Nmax],b[Nmax][Nmax],n,m;
  5.  
  6. void citire()
  7. {
  8. ifstream f("pereti.in");
  9. f>>n>>m;
  10. for(int i=1;i<=n;++i)
  11. for(int j=1;j<=m;++j)
  12. f>>a[i][j];
  13. f.close();
  14. }
  15.  
  16. inline int limite(int i,int j)
  17. {
  18. if(i<0||i>n+1||j<0||j>m+1)
  19. return 0;
  20. return 1;
  21. }
  22.  
  23. void umple(int i,int j)
  24. {
  25. b[i][j]=1;
  26. if(limite(i-1,j)&&b[i-1][j]==0&&((a[i][j]&8)==0))
  27. umple(i-1,j);
  28. if(limite(i+1,j)&&b[i+1][j]==0&&((a[i][j]&2)==0))
  29. umple(i+1,j);
  30. if(limite(i,j+1)&&b[i][j+1]==0&&((a[i][j]&4)==0))
  31. umple(i,j+1);
  32. if(limite(i,j-1)&&b[i][j-1]==0&&((a[i][j]&1)==0))
  33. umple(i,j-1);
  34. }
  35.  
  36. void bordare()
  37. {
  38. for(int j=1;j<=m;++j) /// linia 0:
  39. if((a[1][j]&8)!=0)
  40. a[0][j]=2;
  41. for(int j=1;j<=m;++j) /// linia n+1
  42. if((a[n][j]&2)!=0)
  43. a[n+1][j]=8;
  44. for(int i=1;i<=n;++i) /// coloana 0
  45. if((a[i][1]&1)!=0)
  46. a[i][0]=4;
  47. for(int i=1;i<=n;++i) /// coloana m+1
  48. if((a[i][m]&4)!=0)
  49. a[i][m+1]=1;
  50. }
  51.  
  52. int numarare()
  53. {
  54. int nr=0;
  55. umple(0,0);
  56. for(int i=0;i<=n+1;++i)
  57. for(int j=0;j<=m+1;++j)
  58. if(b[i][j]==1)
  59. {
  60. if((a[i][j]&8)!=0)
  61. ++nr;
  62. if((a[i][j]&4)!=0)
  63. ++nr;
  64. if((a[i][j]&2)!=0)
  65. ++nr;
  66. if((a[i][j]&1)!=0)
  67. ++nr;
  68. }
  69. return nr;
  70. }
  71.  
  72. void afisare()
  73. {
  74. ofstream g("pereti.out");
  75. g<<numarare()<<'\n';
  76. g.close();
  77. }
  78.  
  79. int main()
  80. {
  81. citire();
  82. bordare();
  83. afisare();
  84. return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement