Pagini recente » Cod sursa (job #573245) | Cod sursa (job #2303968) | Cod sursa (job #1906281) | Cod sursa (job #1231760) | Cod sursa (job #2807485)
#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;
}