Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- std::vector<std::vector<long long> > go(2);
- std::vector<long long> poss(2);
- long long dimension = 1;
- long long add(const std::string &str) {
- long long curr = 1;
- long long var = 0;
- for (auto ch : str) {
- ch = ch - 'a';
- if (curr != 1 && poss[curr] == 1)
- var++;
- else
- var = 0;
- if (go[curr][ch]) {
- curr = go[curr][ch];
- } else {
- var = 0;
- dimension++;
- go.push_back(std::vector<long long>(27, 0));
- poss.push_back(0);
- go[curr][ch] = dimension;
- poss[curr]++;
- curr = dimension;
- }
- }
- if (poss[curr] != 0)
- var = 0;
- return str.size() - var;
- }
- int main() {
- poss[1] = 0;
- go[1] = (std::vector<long long>(27, 0));
- long long n;
- std::cin >> n;
- long long res = 0;
- std::string str;
- for (long long i = 0; i < n; ++i) {
- std::cin >> str;
- res += add(str);
- }
- std::cout << res << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement