Pagini recente » Cod sursa (job #2802604) | Cod sursa (job #448119) | Cod sursa (job #2928004) | Cod sursa (job #492413) | Cod sursa (job #2653663)
//
// 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' ;
}
}