Pagini recente » Cod sursa (job #1265080) | Cod sursa (job #1879261) | Cod sursa (job #2403064) | Cod sursa (job #843333) | Cod sursa (job #757486)
Cod sursa(job #757486)
#include <fstream>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;
long N,K;
char S[18000];
long Best;
void Rezolva(vector<long> &V,long L)
{
vector<long> *W = new vector<long>[256];
long i;
for (i = 0;i < 256;i += 1)
{
W[i].reserve(V.size());
}
for (i = 0;i < V.size();i += 1)
{
W[S[V[i] + L]].push_back(i);
}
for (i = 0;i < 256;i += 1)
{
if (W[i].size() >= K)
{
if ((L + 1) > Best)
{
Best = L + 1;
}
if (i == 0)
{
continue;
}
Rezolva(W[i],L + 1);
}
}
delete[] W;
}
int main(void)
{
fstream fin("substr.in",ios::in);
fstream fout("substr.out",ios::out);
long i;
vector<long> W;
fin >> N >> K >> S;
W.reserve(N);
for (i = 0;i < N;i += 1)
{
W.push_back(i);
}
Rezolva(W,0);
fout << Best;
fin.close();
fout.close();
return 0;
}