Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define PLEC fin.close(); fout.close(); return 0;
- using namespace std;
- ifstream fin("cripto.in");
- ofstream fout("cripto.out");
- unordered_set<int64_t> S;
- int n, m, k, q, curr, res(-1), ind, t;
- int64_t Hash, aux;
- string s;
- inline int64_t make_number(string p)
- {
- int64_t r(0);
- for (int i = k - 1; i >= 0; i--)
- r = r * 26 + p[i] - 'a';
- return r;
- }
- int main()
- {
- fin >> n >> m >> k >> q;
- for (int i = 1; i <= n; ++i)
- {
- fin >> s;
- Hash = make_number(s);
- S.insert(Hash);
- }
- vector<int64_t> v(m + 1);
- for (int i = 1; i <= m; ++i)
- {
- fin >> s;
- v[i] = make_number(s);
- }
- vector<int> op(k + 1);
- for (int i = 1; i <= q; ++i)
- {
- Hash = curr = 0;
- for (int j = 0; j < k; ++j)
- fin >> op[j];
- for (int j = k - 1; j >= 0; --j)
- Hash = Hash * 26 + op[j];
- for (int j = 1; j <= m; ++j)
- curr += (S.find(Hash + v[j]) != S.end());
- if (curr > res)
- res = curr, ind = i;
- }
- fout << ind << ' ' << res;
- PLEC
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement