Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <fstream>
  5. #include <functional>
  6. #include <cmath>
  7. #include <set>
  8. #include <deque>
  9. #include <queue>
  10. #include <utility>
  11. #include <map>
  12. #include <string>
  13. #include <iomanip>
  14. #include <cmath>
  15. #include <utility>
  16. #include <ctype.h>
  17. #include <stdio.h>
  18. #include <random>
  19. #include <ctime>
  20.  
  21. #define mp make_pair
  22.  
  23. typedef long long ll;
  24.  
  25. using namespace std;
  26.  
  27. vector<int> z;
  28. string s;
  29.  
  30. int get(int i) {
  31.     return z[i];
  32. }
  33.  
  34. int stupid(int i) {
  35.     while ((z[i] < int(s.size())) && (s[i + z[i]] == s[z[i]])) z[i]++;
  36.     return z[i];
  37. }
  38.  
  39. void add(char c) {
  40.     s += c;
  41.     int n = int(s.size());
  42.     for (int i = int(z.size()) - 1; i < n; i++) {
  43.         if (stupid(i) == n - i) break;
  44.         z.push_back(0);
  45.     }
  46. }
  47.  
  48. int main() {
  49.     s = "aa";
  50.     z.resize(2, -1);
  51.     z[1] = 1;
  52.     int n;
  53.     cin >> n;
  54.     for (int i = 0; i < n; i++) {
  55.         string zp;
  56.         cin >> zp;
  57.         if (zp == "add") {
  58.             string c;
  59.             cin >> c;
  60.             add(c[0]);
  61.         } else {
  62.             int k;
  63.             cin >> k;
  64.             cout << get(k) << '\n';
  65.         }
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement