Cod sursa(job #2513265)

Utilizator mirceatlxhaha haha mirceatlx Data 22 decembrie 2019 18:43:35
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <algorithm>
#include <cstring>
#define NMAX 1000005
using namespace std;

ifstream cin("prefix.in");
ofstream cout("prefix.out");

int T, lcp[NMAX], ans;
char str[NMAX];

int LCP()
{
	int lg = strlen(str);
	int i, j;
	ans = 0;
	lcp[0] = 0;
	i = 0;
	j = 1;
	while(j < lg){
		if(str[j] == str[i]){
			i++;
			lcp[j] = i;
			j++;
		}
		else{
			if(i != 0){
				i = lcp[i - 1];
			}
			else{
				lcp[j] = 0;
				j++;
			}
		}
		
		if(i != 0 && j % (j - i) == 0)
			ans = j;
			
	}
	
	return ans;
}

int main()
{
	cin >> T;
	cin.get();
	for(int i = 0; i < T; i++){
		cin.getline(str,NMAX);
		memset(lcp,0,sizeof(lcp));
		cout << LCP() << "\n";
	}
	return 0;
}