Cod sursa(job #2595713)

Utilizator david.teacaDavid Stefan Teaca david.teaca Data 8 aprilie 2020 11:56:32
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
 
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n, m;
int q, ans;
string s;
int pi[1000005];
 
 
void Read()
{
  f>>n;
  for(int i = 1;i <= n;++i)
    {
      f>>s;
      m = s.length();
      memset(pi, 0, sizeof(pi));
      s.insert(0, " ");
     
      ans = 0;
      q = 0;
      for(int j = 2;j <= m;++j)
      {
        while(q && s[q + 1] != s[j])
          q = pi[q];
        if(s[q + 1] == s[j])
          ++q;
        pi[j] = q;
 
        if(pi[j] != 0 && (pi[j] % (j - pi[j]) == 0))
          ans = j;
      }
      g<<ans<<'\n';
    }
}
 
int main()
{
  Read();
  return 0;
}