Advertisement
pb_jiang

ABC311F AC

Jul 22nd, 2023
1,322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <assert.h>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. #ifndef __DEBUG__
  5. #define dbg(...) 42
  6. #endif
  7. template <class T> using mpq = priority_queue<T, vector<T>, greater<T>>;
  8.  
  9. using ll = long long;
  10. using pii = pair<int, int>;
  11. using pll = pair<ll, ll>;
  12. using vl = vector<ll>;
  13. using vi = vector<int>;
  14.  
  15. constexpr int mod = 998244353;
  16.  
  17. int main(int argc, char **argv)
  18. {
  19.     int n, m;
  20.     cin >> n >> m;
  21.     vector<string> vs(n);
  22.     for (auto &s : vs)
  23.         cin >> s;
  24.  
  25.     ll ans = 0;
  26.     auto get_first_row = [&](int col) {
  27.         for (int i = 0; i < n; ++i)
  28.             if (vs[i][col] == '#')
  29.                 return i;
  30.         return n;
  31.     };
  32.     vector<int> fbs(m, n);
  33.     for (int i = 0; i < m; ++i)
  34.         fbs[i] = get_first_row(i);
  35.  
  36.     vector<ll> dp(n + 2, 0);
  37.     for (int i = fbs[0]; i >= 0; --i)
  38.         dp[i] = dp[i + 1] + 1;
  39.     for (int i = 1; i < m; ++i) {
  40.         vector<ll> ndp(n + 2, 0);
  41.         for (int j = fbs[i]; j >= 0; --j)
  42.             ndp[j] = (ndp[j + 1] + (j >= 1 ? dp[j - 1] : dp[0])) % mod;
  43.         dp.swap(ndp);
  44.     }
  45.     cout << dp[0] << endl;
  46.     return 0;
  47. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement