Cod sursa(job #1975083)

Utilizator MotoAMotoi Alexandru MotoA Data 29 aprilie 2017 20:59:16
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
typedef vector <int> vi;
int T,n;
string s;
vi p(1000001,0);
void prefix(){
 p[1]=0;
 int k=0,lmax=0;
 for(int i=2;i<=n;i++){
  while(k && s[i]!=s[k+1]) k=p[k];
  if(s[i]==s[k+1])k++;
  p[i]=k;
  if(k && k%(i-k)==0)lmax=i;
 }
 g<<lmax<<'\n';
}

int main(){
 f>>T;f.get();
 while(T--){
  getline(f,s);
  n=s.size();
  s.insert(s.begin(),' ');
  prefix();
 }
}