This documentation is automatically generated by online-judge-tools/verification-helper
#include "String/zalgo.hpp"
#pragma once
template<typename T>vector<int> Zalgo(T& s){
int n=s.size(); vector<int> res(n);
for(int i=1,j=0;i<n;i++){
if(i+res[i-j]<j+res[j])res[i]=res[i-j];
else{
int k=max(0,j+res[j]-i);
while(i+k<n&&s[k]==s[i+k])k++;
res[i]=k; j=i;
}
} res[0]=n; return res;
}
/**
* @brief Z-Algorithm
*/
#line 2 "String/zalgo.hpp"
template<typename T>vector<int> Zalgo(T& s){
int n=s.size(); vector<int> res(n);
for(int i=1,j=0;i<n;i++){
if(i+res[i-j]<j+res[j])res[i]=res[i-j];
else{
int k=max(0,j+res[j]-i);
while(i+k<n&&s[k]==s[i+k])k++;
res[i]=k; j=i;
}
} res[0]=n; return res;
}
/**
* @brief Z-Algorithm
*/