Cod sursa(job #2807485)

Utilizator PetstebPopa Petru Petsteb Data 23 noiembrie 2021 20:52:34
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <string>

using namespace std;

ifstream in("map.in");
ofstream out("map.out");

int main()
{
    int n, m, maxi = 20000;
    in >> m >> n;
    string s[m];
    int l;
    for(int i = 0; i < m; ++i)
        in >> s[i];
    for(int j = 0; j < m; ++j){
        int z[n] = {0}, maxim = 0;
        for (int i = 1, l = 0, r = 0; i < n; ++i) {
            if (i <= r)
                z[i] = min (r - i + 1, z[i - l]);
            while (i + z[i] < n && s[j][z[i]] == s[j][i + z[i]])
                ++z[i];
            if (i + z[i] - 1 > r)
                l = i, r = i + z[i] - 1;
        }
        for(int i = 0; i < n; ++i)
            if(z[i] > n / 2)
                maxim = max(z[i], maxim);
        maxi = min(maxim, maxi);
    }
    out << max(maxi, 1) ;
    return 0;
}