Cod sursa(job #1809494)

Utilizator cicero23catalin viorel cicero23 Data 18 noiembrie 2016 23:27:25
Problema Prefix Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int q1=100007,q2=100021;
char s[1000001];
int trist(int k)
{
    int x=0,y=0,xs,ys,ok,j,i;
    for(i=0; i<k; i++)
        {
            x=((x*128)%q1+s[i])%q1;
            y=((y*128)%q2+s[i])%q2;
        }

   ok=1;
   j=1;
   while(ok&&j<=strlen(s)/k)
   {
       xs=0;
       ys=0;
       for(i=j*k;i<(j+1)*k;i++)
       {
           xs=((xs*128)%q1+s[i])%q1;
           ys=((ys*128)%q2+s[i])%q2;
       }
       if(xs==x&&ys==y) j++;
       else ok=0;
   }
   if(j>1) return j*k;
   return 0;
}
int main()
{
    int maxi=0,n,i,j;
   f>>n;
   f.get();
   for(i=1;i<=n;i++)
   {
       maxi=0;
       f.getline(s,1000001);
       for(j=1;j<=strlen(s)/2;j++)
       {

          if(trist(j)>maxi) {maxi=trist(j);}
       }
       g<<maxi<<'\n';
   }
}