Advertisement
Guest User

ICPC Dhaka Regional 2019 H Solution C++

a guest
Nov 18th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int counts = 0;
  4. int rows, cols;
  5. void floodfill(int x, int y, char grid[1000][1000])
  6. {
  7.     if (grid[x][y] == '#')
  8.     {
  9.         return;
  10.     }
  11.     grid[x][y] = '#';
  12.     counts++;
  13.     if (grid[x][y+1] != '*' && y+2<cols)//go right
  14.     {
  15.         floodfill(x,y+2, grid);
  16.     }
  17.     if (grid[x][y-1]!='*' && y-2> 0)//go left
  18.     {
  19.         floodfill(x,y-2,grid);
  20.     }
  21.     if (grid[x+1][y] != '*' && x+2<rows)//go down
  22.     {
  23.         floodfill(x+2,y,grid);
  24.     }
  25.     if (grid[x-1][y] != '*' && x-2>0)//go up
  26.     {
  27.         floodfill(x-2,y,grid);
  28.     }
  29. }
  30. int main()
  31. {
  32.     ios_base::sync_with_stdio(0);
  33.     cin.tie(0);
  34.     cout.tie(0);
  35.     int tc;
  36.     cin >> tc;
  37.     for (int i = 0; i < tc; ++i)
  38.     {
  39.         cout << "Case " << i+1 << ": ";
  40.         int row, col;
  41.         cin >> row >> col;
  42.         char grid[row][col];
  43.         for (int j = 0; j < row; ++j)
  44.         {
  45.             for (int k = 0; k < col; ++k)
  46.             {
  47.                 cin >> grid[j][k];
  48.             }
  49.         }
  50.         int new_row = row+(row-1);
  51.         int new_col = col+(col-1);
  52.         char grid2[new_row][1000] = {' '};
  53.         int tmp_j = 0;
  54.         for (int j = 0; j < new_row; j+=2)
  55.         {
  56.             int tmp_k = 0;
  57.             for (int k = 0; k < new_col; k+=2)
  58.             {
  59.                 grid2[j][k] = grid[tmp_j][tmp_k++];
  60.             }
  61.             tmp_j++;
  62.         }
  63.         for (int j = 0; j < new_row; j+=2)
  64.         {
  65.             for (int k = 0; k < new_col; k+=2)
  66.             {
  67.                 if (grid2[j][k] == 'D')
  68.                 {
  69.                     grid2[j+1][k] = '*';//down
  70.                 }
  71.                 if (grid2[j][k] == 'B')
  72.                 {
  73.                     grid2[j+1][k] = '*';//down
  74.                     grid2[j][k+1] = '*';//right
  75.                 }
  76.                 if (grid2[j][k] == 'R')
  77.                 {
  78.                     grid2[j][k+1] = '*';//right
  79.                 }
  80.             }
  81.         }
  82.         counts = 0;
  83.         rows = new_row;
  84.         cols = new_col;
  85.         for (int i = 1; i < new_col; i+=2)
  86.         {
  87.             if (grid2[0][i] != '*')
  88.             {
  89.                 floodfill(1, i, grid2);
  90.             }
  91.         }
  92.         cout << counts << endl;
  93.     }
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement