Cod sursa(job #2759475)

Utilizator VladTZYVlad Tiganila VladTZY Data 18 iunie 2021 01:17:13
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <string.h>

#define NMAX 1000005

using namespace std;

ifstream f("prefix.in");
ofstream g("prefix.out");

int questions;
char str[NMAX];
int pi[NMAX];

int main()
{
    f >> questions;

    while (questions--) {
        f >> (str + 1);

        pi[1] = 0;
        int pre = 0;
        int answer = 0;

        int length = strlen(str + 1);

        for (int i = 2; i <= length; i++) {

            while (pre != 0 && str[i] != str[pre + 1]) {
                pre = pi[pre];
            }

            if (str[i] == str[pre + 1])
                pre++;

            pi[i] = pre;

            if (pi[i] != 0 && i % (i - pi[i]) == 0)
                answer = i;
        }

        g << answer << "\n";
    }

    return 0;
}