Cod sursa(job #2592743)

Utilizator victorzarzuZarzu Victor victorzarzu Data 2 aprilie 2020 11:34:29
Problema Prefix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 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));
     
      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;
}