Cod sursa(job #292160)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 30 martie 2009 20:27:17
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <string>
using namespace std;
const int LMAX=1000001;
string S;
int T,pi[LMAX];
ifstream f("prefix.in");
ofstream g("prefix.out");
int main(){
    int i,k;
    f>>T;
    getline(f,S);
    while (T--){
          getline(f,S);
          pi[1]=k=0;
          for (i=2;i<=(int)S.length();++i){
              while (k>0 && S[i-1]!=S[k]) k=pi[k];
              if (S[k]==S[i-1]) ++k;
              pi[i]=k;
              }
          int r=0;
          for (i=(int)S.length()-1;i>=0;i--)
            if (pi[i+1]>0 && (i+1)%(i+1-pi[i+1])==0)
            {
             r=i+1;
             break;
            }
          g<<r<<'\n';
          }
    return 0;
}