Advertisement
MathQ_

Untitled

Aug 28th, 2021
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. const int MAXN = 5e4;
  2.  
  3. int main() {
  4.     fast
  5.     // file_in
  6.  
  7.     int n, m;
  8.     cin >> n >> m;
  9.     vector<vector<bitset<MAXN>>> mk(m, vector<bitset<MAXN>>(27));
  10.     ll ans = 0;
  11.     bitset<MAXN> res, cur;
  12.     res.set();
  13.     for (int g = 0; g < n; ++g) {
  14.         string s;
  15.         cin >> s;
  16.         for (int i = 0; i < m; ++i) {
  17.             if (s[i] == '?') {
  18.                 for (int j = 0; j < 27; ++j) {
  19.                     cur |= mk[i][j];
  20.                 }
  21.                 mk[i][26][g] = 1;
  22.             } else {
  23.                 cur |= mk[i][s[i] - 'a'];
  24.                 cur |= mk[i][26];
  25.                 mk[i][s[i] - 'a'][g] = 1;
  26.             }
  27.             res &= cur;
  28.             cur.reset();
  29.         }
  30.         ans += res.count();
  31.         res.set(); cur.reset();
  32.     }
  33.     cout << ans << '\n';
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement