Cod sursa(job #757941)

Utilizator MciprianMMciprianM MciprianM Data 13 iunie 2012 20:00:58
Problema Substr Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#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;
}