Cod sursa(job #2321186)

Utilizator shantih1Alex S Hill shantih1 Data 15 ianuarie 2019 19:41:19
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");

int n,i,j,a,nr,t;
int pi[1000005];
string s,A;

void prefix_func()
{
	int k=0;
	pi[1]=0;	
	for(int q=2;q<=a;q++)
	{
		while(k && A[k+1]!=A[q])
			k=pi[k];
		if(A[k+1]==A[q])
			k++;
		pi[q]=k;
	}
}
int main() {
	
	fin>>t;
	while(t--)
	{
		A=" ";
		fin>>s;
		A+=s;
		a=(int)A.size();
		
		prefix_func();
		
		for(i=a-1;i>0;i--)
			if(pi[i]>=(i+1)/2 && pi[i]%(i-pi[i])==0)
			{
				fout<<i<<"\n";
				i=0;
			}
		if(i==0)	fout<<0<<"\n";
	}
}