Pagini recente » Monitorul de evaluare | Cod sursa (job #2199043) | Cod sursa (job #1850503) | Cod sursa (job #1170899) | Cod sursa (job #513128)
Cod sursa(job #513128)
#include <cstring>
#include <fstream>
#include <algorithm>
using namespace std;
bool cmp(char* c1, char* c2)
{
return strcmp(c1, c2) < 0;
}
int N, K;
char text[16400], *p[16400];
int result;
int main()
{
ifstream fin("substr.in");
ofstream fout("substr.out");
fin >> N >> K;
fin.getline(text, 16400);
fin.getline(text, 16400);
for (int i = 0; i < N; ++i)
p[i] = text + i;
sort(p, p + N, cmp);
for (int i = 0; i < N - K + 1; ++i)
{
int match = 0;
char *p1 = p[i], *p2 = p[i + K - 1];
while (*p1 == *p2 && *p1 && *p2)
++match, ++p1, ++p2;
if (match > result)
result = match;
}
fout << result;
fin.close();
fout.close();
}