Cod sursa(job #2462350)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 27 septembrie 2019 10:09:43
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
#define NMAX 1000003
int lps [NMAX], ind, t, ans;
string str;
void KMP (string A){
    ind = 0;
    memset (lps, 0, sizeof (lps));
    for (int i = 1; i < A.size ();){
		if (A [ind] == A [i])
			lps [i ++] = ++ ind;
		else if (ind != 0)
			ind = lps [ind - 1];
		else lps [i ++] = 0;
	}
}
int main (){
	fin >> t;
	while (t --){
		fin >> str;
		KMP (str); ans = 0;
		for (int i = str.size () - 1; i >= 0; i --){
			if (lps [i] != 0 && (i + 1) % (i + 1 - lps [i]) == 0){
				ans = i + 1;
				break;
			}
		}
		fout << ans << '\n';
	}
	return 0;
}