Advertisement
Abrar_Al_Samit

Red Polyomino (ABC 211 E) (TLE + WA)

Jul 24th, 2021 (edited)
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4.  
  5. using namespace std;
  6. using namespace __gnu_pbds;
  7.  
  8.  
  9. #define debug(x) cerr << '[' << (#x) << "] = " << x << '\n';
  10.  
  11. template<class T> using ordered_set = tree<T, null_type , less<T> , rb_tree_tag , tree_order_statistics_node_update> ;
  12.  
  13. int n, k;
  14. char g[8][8];
  15. int dx[] {1, -1, 0, 0};
  16. int dy[] {0, 0, 1, -1};
  17. set<vector<pair<int,int>>>s;
  18. vector<pair<int,int>>v;
  19. bool valid(int i, int j) {
  20.     return i>-1 && j>-1 && i<n && j<n && g[i][j] == '.';
  21. }
  22. void backtrack(int i, int j) {
  23.     g[i][j] = 'r';
  24.     v.push_back(make_pair(i, j));
  25.     if(v.size()==k) {
  26.         vector<pair<int,int>>v2 = v;
  27.         sort(v2.begin(), v2.end());
  28.         s.insert(v2);
  29.         v.pop_back();
  30.         g[i][j] = '.';
  31.         return;
  32.     }
  33.     for(auto it : v) {
  34.         int x = it.first, y = it.second;
  35.         for(int k=0; k<4; ++k) {
  36.             int nx = x + dx[k], ny = y + dy[k];
  37.             if(valid(nx, ny))
  38.                 backtrack(nx, ny);
  39.            
  40.         }
  41.     }
  42.     v.pop_back();
  43.     g[i][j] = '.';
  44. }
  45. void PlayGround() {
  46.     cin >> n >> k;
  47.     for(int i=0; i<n; ++i) {
  48.         for(int j=0; j<n; ++j) {
  49.             cin >> g[i][j];
  50.         }
  51.     }
  52.     for(int i=0; i<n; ++i) {
  53.         for(int j=0; j<n; ++j) if(g[i][j]=='.') {
  54.             backtrack(i, j);
  55.         }
  56.     }
  57.     cout << s.size() << '\n';
  58.  
  59.  
  60.     #ifndef ONLINE_JUDGE
  61.         cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
  62.     #endif
  63. }
  64. int main() {
  65.     ios_base::sync_with_stdio(0);
  66.     cin.tie(0);
  67.     cout.tie(0);
  68.     #ifndef ONLINE_JUDGE
  69.         freopen("input.txt", "r", stdin);
  70.     #endif
  71.     PlayGround();
  72.  
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement