Cod sursa(job #2573027)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 5 martie 2020 15:26:50
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<bits/stdc++.h>
using namespace std;

const int NMAX=1000010;

int prevv[NMAX];
char s[NMAX];

int prefix(){
	int k=0,rez=0,n=strlen(s+1);
	for(int i=2;i<=n;i++){
		while(k>0 && s[k+1]!=s[i])
			k=prevv[k];
		if(s[k+1]==s[i])
			k++;
		prevv[i]=k;
		if(prevv[i] && prevv[i]%(i-prevv[i])==0)
            rez=i;
	}
	return rez;
}

int main(){
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	int t;
	scanf("%d", &t);
	for(int i=1;i<=t;i++){
		scanf("%s", s+1);
		printf("%d\n", prefix());
	}
	return 0;
}