Pagini recente » Cod sursa (job #2040444) | Cod sursa (job #2715344) | Cod sursa (job #204082) | Cod sursa (job #2001814) | Cod sursa (job #757941)
Cod sursa(job #757941)
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <ctime>
#include <cstdlib>
#include <cstring>
#include <cassert>
using namespace std;
map <string, int> mp;
bool has (string &s, int l, int k) {
int i, len = s.size ();
mp.clear ();
for (i = 0; i + l <= len; ++ i) {
++ mp [s.substr (i, l)];
if (mp [s.substr (i, l)] >= k) {
return true;
}
}
return false;
}
int main () {
int i, n, k, pas;
string s;
ifstream f ("substr.in");
ofstream g ("substr.out");
f >> n >> k;
f >> s;
assert (n == s.size ());
for (i = 0, pas = (1 << 15); pas; pas >>= 1) {
if (i + pas <= n && has (s, i + pas, k)) {
i += pas;
}
}
g << i << endl;
f.close ();
g.close ();
return 0;
}