Cod sursa(job #3333633)

Utilizator informatica1210Alexia Petre informatica1210 Data 14 ianuarie 2026 17:39:06
Problema Prefix Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include "bits/stdc++.h"
using namespace std;
ifstream f ("prefix.in");
ofstream g ("prefix.out");
long long a[1000002],s[1000002],pp[1000002];
int main ()
{
    long long t,p1,mod,x,n,y,max1,stop,stop1,l,nr,nr1,z,sa,sb;
    char a[1000002];
    f>>t;p1=1013;
    mod=999979;
    for (x=1;x<=t;x++)
    {
         f>>a;
         n=strlen(a);
         s[1]=a[0]-'a'+1;
         for (y=0;y<n;y++)
         {
             s[y+1]=(s[y]*p1+(a[y]-'a'+1))%mod;
         }
         pp[0]=1;
         for (y=1;y<=n;y++)
         {
             pp[y]=(pp[y-1]*p1)%mod;
         }
         max1=0;
        for (l=1;l<=n;l++)
             {
                 nr=0;nr1=0;stop=0;
                 for (z=1;z<=n-l+1 && stop==0;z+=l)
                 {
                     sa=s[l];
                     sb=(s[z+l-1]-(s[z-1]*pp[l])%mod+mod)%mod;
                     if (sa==sb) {nr++;nr1+=l;}
                     else stop=1;
                 }
                 if (nr>1) {max1=max(max1,nr1);}
             }
         g<<max1<<endl;
         for (y=1;y<=n;y++)
            s[y]=0;
    }
    f.close ();
    g.close ();
    return 0;
}