Cod sursa(job #1050553)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 8 decembrie 2013 18:17:02
Problema Substr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <map>
#include <string>


using namespace std;

const int MAX_N = 16384;
std::map < string, int > M;
std::string text, aux, add;

int main()
{
    ifstream cin( "substr.in" );

    int N, K;
    cin >> N >> K;
    cin >> text;
    cin.close();
    for( int i = 0; i < N / 2; ++i )
        text[i] = text[i] + text[N - i - 1] - ( text[N - i - 1] = text[i] );

    int l = 1, r = N, ans = 0;
    while( l <= r ){

        int mid = ( l + r ) / 2;
        bool ev = false;

        aux.clear();
        M.clear();
        for( int i = 0; i < N; ++i ){

            add.push_back( text[i] );
            aux.insert( 0, add );
            add.erase( 0, 1 );
            if( i >= mid ) aux.erase( mid - 1, 1 );
            std::map < string, int >::iterator it;
            it = M.find( aux );
            if( it != M.end() ){

                    if( ++it->second >= K ) ev = true;
                    }
            else M.insert( pair< string, int >( aux, 1 ) );
            }

        if( ev ){

            ans = mid;
            l = ++mid;
            }
        else r = --mid;
        }
    ofstream cout( "substr.out" );
    cout << ans;
    cout.close();
    return 0;
}