Cod sursa(job #2245862)

Utilizator axelteoTeodor Dutu axelteo Data 26 septembrie 2018 01:50:19
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <string>

using namespace std;

#define MAX_CHARS 1000001

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

string str;
int numTests, map[MAX_CHARS];

int buildSufPref() {
    int sol = 0, len = (int)str.size();

    for (int i = 1, j = 0; i < len; ++i) {
        while (str[i] != str[j] && j) {
            j = map[j - 1];
        }

        if (str[i] == str[j]) {
            ++j;
        }

        map[i] = j;

        if (!((i + 1) % (i - map[i] + 1)) && map[i]) {
            sol = i + 1;
        }
    }

    return sol;
}


int main() {
    fin >> numTests;

    while (numTests--) {
        fin >> str;
        fout << buildSufPref() << '\n';
    }

    return 0;
}