Cod sursa(job #1581428)

Utilizator Darius15Darius Pop Darius15 Data 26 ianuarie 2016 20:04:35
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,i,j,pr[1000001],n,k,l[1000001];
string s;
bool ok;
int main()
{
    f>>t;
    for (i=1;i<=t;i++)
    {
      f>>s;
      n=s.length();
      for (j=n;j>=1;j--)
        s[j]=s[j-1];
      k=0;
      for (j=2;j<=n;j++)
      {
        while(k && s[k+1]!=s[j])
          k=pr[k];
        if (s[k+1]==s[j])
          k++;
        pr[j]=k;
      }
      ok=false;
      for (j=n;j>=1;j--)
      if (pr[j] && j%(j-pr[j])==0)
        g<<j<<'\n',ok=true,j=0;
      if (ok==false) g<<0<<'\n';
    }
    return 0;
}