Cod sursa(job #3288373)

Utilizator cattyAninisCatrinel catty Data 21 martie 2025 19:30:59
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
string n,v;
int len,lps[1000005],i,t,lst,j,poz,siz;
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';
        }
        else
        {
            v="";
            siz=0;
            for(i=0; i<lst; ++i)
                v+=n[i],++siz;
            poz=0;
            for(i=0,j=0; n[i]; ++i)
            {
                if(v[j]==n[i])
                {
                    ++j;
                    if(j==siz)
                        j=0,poz=i+1;
                }
                else break;
            }
            out<<poz<<'\n';
        }
    }
}