Cod sursa(job #2639447)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 2 august 2020 09:54:54
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
int LPS [1000003], 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;
}