Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. std::vector<std::vector<long long> > go(2);
  5. std::vector<long long> poss(2);
  6. long long dimension = 1;
  7.  
  8.  
  9. long long add(const std::string &str) {
  10. long long curr = 1;
  11. long long var = 0;
  12. for (auto ch : str) {
  13. ch = ch - 'a';
  14. if (curr != 1 && poss[curr] == 1)
  15. var++;
  16. else
  17. var = 0;
  18. if (go[curr][ch]) {
  19. curr = go[curr][ch];
  20. } else {
  21. var = 0;
  22. dimension++;
  23. go.push_back(std::vector<long long>(27, 0));
  24. poss.push_back(0);
  25. go[curr][ch] = dimension;
  26. poss[curr]++;
  27. curr = dimension;
  28. }
  29. }
  30.  
  31. if (poss[curr] != 0)
  32. var = 0;
  33. return str.size() - var;
  34. }
  35.  
  36. int main() {
  37. poss[1] = 0;
  38. go[1] = (std::vector<long long>(27, 0));
  39. long long n;
  40. std::cin >> n;
  41. long long res = 0;
  42. std::string str;
  43. for (long long i = 0; i < n; ++i) {
  44. std::cin >> str;
  45. res += add(str);
  46. }
  47.  
  48. std::cout << res << '\n';
  49. return 0;
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement