Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <vector>
  5. #include <string>
  6. #include <cstdlib>
  7. #include <cmath>
  8. #include <iomanip>
  9. #include <cstring>
  10. #include <cassert>
  11. #include <queue>
  12. #include <set>
  13.  
  14. using namespace std;
  15.  
  16. string s;
  17.  
  18. const long long MAX = 1e6;
  19.  
  20. const long long p = 2017;
  21.  
  22. const long long base = 1e9+7;
  23.  
  24. vector <int> deg(MAX);
  25.  
  26. void degr(vector <int> &deg){
  27.     deg[0] = 1;
  28.     for (int i = 1;i<s.size();++i){
  29.         deg[i] = deg[i-1]*p;
  30.     }
  31. }
  32.  
  33. void pref(vector <int> t, string s0){
  34.     t[0] = s0[0];
  35.     for (int i = 1;i<s0.size();++i){
  36.         t[i] = (t[i-1]*p+s0[i])%base;
  37.     }
  38. }
  39.  
  40. int get_hash(int l,int R, vector <int> hro){
  41.     if(l==0)
  42.         return hro[R];
  43.     else{
  44.         int res = (hro[R]-(hro[l-1]*deg[abs(R-l+1)])%base);
  45.         if(res<0)
  46.             res += base;
  47.         return res;
  48.     }
  49. }
  50.  
  51. int main() {
  52.     ios_base::sync_with_stdio(false);
  53.     cin.tie(nullptr);
  54.     cin >> s;
  55.     int n = s.size();
  56.     string s1 = s;
  57.     reverse(s.begin(),s.end());
  58.     string s2;
  59.     s2 = s;
  60.     s = s1;
  61.     s1 = s2;
  62.     vector <int> h(n);
  63.     vector <int> h1(n);
  64.     degr(deg);
  65.     pref(h,s);
  66.     pref(h1,s1);
  67.     int ans = 0;
  68.     for (int i = 0;i<n-1;++i){
  69.         for (int j = i+1;j<n;++j){
  70.             cout << i << " " << j << " " << get_hash(i,j,h) << " " << get_hash(i,j,h1) << "\n";
  71.            if(get_hash(i,j,h)==get_hash(i,j,h1))
  72.                 ans++;
  73.         }
  74.     }
  75.     cout << ans;
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement