Cod sursa(job #2653663)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 28 septembrie 2020 19:07:23
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
//
//  main.cpp
//  Potrivirea sirurilor
//
//  Created by Eusebiu Rares on 28/09/2020.
//  Copyright © 2020 Eusebiu Rares. All rights reserved.
//

#include <iostream>
#include <fstream>

std::fstream in ("prefix.in", std::ios::in) ;
std::fstream out ("prefix.out", std::ios::out) ;

const int MV = 2e6 ;
int pi[2 * MV + 1] ;

int main(int argc, const char * argv[]) {
	int n ; in >> n ;
	while (n --) {
		std::string A ;
		in >> A ;
		std::string tot = '+' + A ;
		int len(tot.size()) ;
		int nr(0), i, sol(0) ;
		pi[1] = 0 ;
		for (i = 2 ; i < len ; ++ i) {
			int prev = pi[i - 1] ;
			while (prev && tot[prev + 1] != tot[i]) {
				prev = pi[prev] ;
			}
			prev += tot[prev + 1] == tot[i] ;
			pi[i] = prev ;
			if (pi[i] && (i % (i - pi[i]) == 0)) {
				sol = i ;
			}
		}
				out << sol << '\n' ;
	}
}