Cod sursa(job #3288371)

Utilizator cattyAninisCatrinel catty Data 21 martie 2025 19:27:05
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
string n,v;
int len,lps[2000005],i,t,lst,j,poz;
int main()
{
    in>>t;
    while(t--)
    {
        in>>n;
        len=0;
        lps[0]=0;
        for(i=1; n[i]; ++i)
        {
            if(n[i]==n[len])
                ++len,lps[i]=len;
            else if(!len)
                lps[i]=0;
            else
            {
                while(len)
                {
                    len=lps[len-1];
                    if(n[i]==n[len])
                    {
                        ++len;
                        lps[i]=len;
                        break;
                    }
                }
            }
        }
        lst=0;
        for(i=0;n[i];++i)
            if(lps[i]*2==i+1)
                lst=lps[i];
        if(!lst)
        {
            out<<0<<'\n';
            continue;
        }
        v="";
        for(i=0;i<lst;++i)
            v+=n[i];
            poz=lst;
        for(i=lst,j=0;n[i];++i)
        {
            if(v[j]==n[i])
            {
                ++j;
                if(j==v.size())
                    j=0,poz=i+1;
            }
            else break;
        }
        out<<poz<<'\n';
    }
}