Cod sursa(job #3288375)
Utilizator | Data | 21 martie 2025 19:45:58 | |
---|---|---|---|
Problema | Prefix | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.86 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;
poz=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;
}
}
}
if(len && (i+1)%(i-len+1)==0)
poz=i+1;
}
out<<poz<<'\n';
}
}