SHARE
TWEET

yeee

a guest Jan 24th, 2020 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3. #include <bitset>
  4. #include <queue>
  5. #define MAX 104
  6. #define NS 0101
  7. #define EV 1010
  8. using namespace std;
  9.  
  10. ifstream fin("pereti.in");
  11. ofstream fout("pereti.out");
  12.  
  13. int n, m;
  14.  
  15. int di[5]= {-1, 0, +1, 0};
  16. int dj[5]= {0, +1,0, -1};
  17. queue<pair<int, int> > q;
  18. int a[MAX][MAX];
  19. int aux[MAX][MAX];
  20.  
  21. void gard()
  22. {
  23.     int i, j;
  24.     for (j = 1; j <= m; j++)
  25.     {
  26.         if ((a[1][j] & 8) != 0)
  27.         {
  28.             a[0][j] = 2;
  29.         }
  30.     }
  31.     for (j = 1; j <= m; j++)
  32.     {
  33.         if ((a[n][j] & 2) != 0)
  34.         {
  35.             a[n + 1][j] = 8;
  36.         }
  37.     }
  38.     for (i = 1; i <= n; i++)
  39.     {
  40.         if ((a[i][1] & 1) != 0)
  41.         {
  42.             a[i][0] = 4;
  43.         }
  44.     }
  45.     for (i = 1; i <= n; i++)
  46.     {
  47.         if ((a[i][m] & 4) != 0)
  48.         {
  49.             a[i][m + 1] = 1;
  50.         }
  51.     }
  52. }
  53.  
  54. bool posibil(int i, int j)
  55. {
  56.     return i >= 1 && i <= n && j <= m && j >= 1;
  57.  
  58. }
  59.  
  60. int FILL()
  61. {
  62.     int nexti,nextj,cate=0;
  63.     while(!q.empty())
  64.     {
  65.         int i=q.front().first;
  66.         int j=q.front().second;
  67.         q.pop();
  68.  
  69.         if((bool)(a[i][j] & 1)==0 && posibil(i, j-1) && aux[i][j-1] == 0)
  70.         {
  71.             q.push({i, j-1});
  72.             aux[i][j-1] = 1;
  73.         }
  74.         else if((bool)(a[i][j] & 1)==1)
  75.         {
  76.             cate++;
  77.         }
  78.         if((bool)(a[i][j] & 2)==0 && posibil(i+1, j) && aux[i+1][j] == 0)
  79.         {
  80.             q.push({i+1, j});
  81.             aux[i+1][j] = 1;
  82.  
  83.         }
  84.         else if((bool)(a[i][j] & 2)==1)
  85.         {
  86.             cate++;
  87.         }
  88.  
  89.         if((bool)(a[i][j] & 4)==0 && posibil(i, j+1) && aux[i][j+1] == 0)
  90.         {
  91.             q.push({i, j+1});
  92.             aux[i][j+1] = 1;
  93.         }
  94.         else if((bool)(a[i][j] & 4)==1)
  95.         {
  96.             cate++;
  97.         }
  98.  
  99.         if((bool)(a[i][j] & 8)==0 && posibil(i-1, j) && aux[i-1][j] == 0)
  100.         {
  101.             q.push({i-1, j});
  102.             aux[i-1][j] = 1;
  103.         }
  104.         else if((bool)(a[i][j] & 8)==1)
  105.         {
  106.             cate++;
  107.         }
  108.     }
  109.  
  110.     return cate;
  111. }
  112.  
  113. void algoritm()
  114. {
  115.     fin>>n>>m;
  116.     for(int i=1; i<=n; i++)
  117.     {
  118.         for(int j=1; j<=m; j++)
  119.         {
  120.             fin>>a[i][j];
  121.         }
  122.     }
  123.     fin.close();
  124.     gard();
  125.  
  126.     for(int i=0; i<=n+1; i++)
  127.     {
  128.         q.push({i,0});
  129.         q.push({i,m+1});
  130.         aux[i][0] = 1;
  131.         aux[i][m+1] = 1;
  132.     }
  133.  
  134.     for(int i=0; i<=m+1; i++)
  135.     {
  136.         q.push({n+1,i});
  137.         q.push({0,i});
  138.         aux[0][i] = 1;
  139.         aux[n+1][i] = 1;
  140.     }
  141.  
  142.     int walls=FILL();
  143.     fout << walls;
  144.     int doors=0;
  145. }
  146.  
  147. void afisari()
  148. {
  149.     for(int i=1; i<=n; i++)
  150.     {
  151.         for(int j=1; j<=m; j++)
  152.         {
  153.             fout<<aux[i][j]<<" ";
  154.         }
  155.         fout<<endl;
  156.     }
  157.     fout.close();
  158. }
  159.  
  160. int main()
  161. {
  162.     algoritm();
  163.     //afisari();
  164.     return 0;
  165. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top