Submission #232521

#TimeUsernameProblemLanguageResultExecution timeMemory
232521VEGAnnParametriziran (COCI19_parametriziran)C++14
110 / 110
498 ms39048 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ft first #define sd second #define sz(x) ((int)x.size()) using namespace std; using namespace __gnu_pbds; typedef long long ll; const int N = 50100; const ll Z = 28; gp_hash_table<int, int> mem; string s[N]; int n, m; ll ans = 0; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n >> m; for (int i = 0; i < n; i++){ cin >> s[i]; for (int msk = 0; msk < (1 << m); msk++){ bool bad = 0; int t = 0; for (int j = 0; j < m && !bad; j++) if (msk & (1 << j)) { if (s[i][j] == '?') bad = 1; else t = t * Z + 26; } else { if (s[i][j] == '?') t = t * Z + 27; else t = t * Z + (s[i][j] - 'a'); } if (!bad) mem[t]++; } } for (int i = 0; i < n; i++){ for (int msk = 0; msk < (1 << m); msk++){ int t = 0; for (int j = 0; j < m; j++) if (msk & (1 << j)) { if (s[i][j] == '?') t = t * Z + 26; else t = t * Z + 27; } else { if (s[i][j] == '?') t = t * Z + 27; else t = t * Z + (s[i][j] - 'a'); } if (mem.find(t) != mem.end()) ans += mem[t]; } } cout << (ans - n) / 2; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...