Pagini recente » Istoria paginii runda/sim.k/clasament | Monitorul de evaluare | Cod sursa (job #877558) | Cod sursa (job #1400312) | Cod sursa (job #1525095)
#include <fstream>
#include <map>
#include <cstring>
#include <string>
#include <deque>
using namespace std;
ifstream in("substr.in");
ofstream out("substr.out");
const int NMAX = 16500;
map < deque<char>, int > MAP;
string s;
int N, K, Ans = 0;
int CONT( int L ) {
deque< char > DQ;
int cnt = 0;
for( int ind = 1; ind <= N; ++ind ) {
DQ.push_back( s[ind] );
if( ind - L >= 1 ) {
DQ.pop_front();
}
if( ind - L >= 0 ) {
MAP[ DQ ]++;
cnt = max( cnt, MAP[ DQ ] );
}
}
return cnt;
}
int main() {
in >> N >> K;
in >> s;
s = "#" + s;
int step = 1;
for( ; step * 2 <= N; step <<= 1 );
for( Ans = 0; step; step >>= 1 ) {
if( CONT(Ans+step) >= K ) Ans += step;
}
out << Ans << '\n';
return 0;
}