Cod sursa(job #2637378)

Utilizator irimia_alexIrimia Alex irimia_alex Data 22 iulie 2020 18:09:28
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <fstream>
#include <iostream>
#define NMAX 1000001

using namespace std;

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

char s[NMAX];
int p[NMAX];

void prefix() {
	int res = 0;
	p[0] = 0;
	int i = 0, j = 1;
	while (s[j] != '\0') {
		if (s[i] == s[j]) {
			++i;
			p[j] = i;
			++j;
			if (i >= j / 2 && j % (j - i) == 0)
				res = j;
		}
		else
			if (i == 0) {
				p[j] = 0;
				++j;
			}
			else
				i = p[i - 1];
	}
	fout << res << '\n';
}

int main() {
	int t;
	fin >> t;
	while (t--) {
		fin >> s;
		prefix();
	}

	return 0;
}