Advertisement
Guest User

Untitled

a guest
May 19th, 2022
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. vector<int> z_function (string s) {
  7.     int n = (int) s.length();
  8.     vector<int> z (n);
  9.     for (int i=1, l=0, r=0; i<n; ++i) {
  10.         if (i <= r)
  11.             z[i] = min (r-i+1, z[i-l]);
  12.         while (i+z[i] < n && s[z[i]] == s[i+z[i]])
  13.             ++z[i];
  14.         if (i+z[i]-1 > r)
  15.             l = i,  r = i+z[i]-1;
  16.     }
  17.     return z;
  18. }
  19.  
  20.  
  21. int main(int argc, char** argv)
  22. {
  23.     string str = "baz";
  24.     int sol = 0;
  25.     for(int i = 0; i< str.size();i++){
  26.         string x = str.substr( 0 , i+1 );
  27.         reverse( x.begin() , x.end() );
  28.         vector<int> z = z_function( x );
  29.         int mx = 0;
  30.         for(int j= 0; j <x.size();j++)
  31.             mx = max( mx , z[j] );
  32.         sol += (i+1) - mx;
  33.     }
  34.     return 0;
  35. }
  36.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement