Cod sursa(job #2756427)

Utilizator Ana100Ana-Maria Tomoiala Ana100 Data 31 mai 2021 17:48:09
Problema Substr Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;
ifstream cin("substr.in");
ofstream cout("substr.out");
string str;
int f[70000];
int main()
{
    long long n,k,mij,st,dr,baza,putere=1,mod,cnt=0,ans=0,i,cod=0,codnou=0,DR,ok=0;
    cin>>n>>k;
    cin>>str;
    dr=n;
    st=1;
    baza=13;
    mod=66973;
    while(st<=dr)
    {
        ok=0;
        mij=(st+dr)>>1;
        putere=1;
        cnt=0;
        cod=0;
        for(i=1;i<=mij-1;i++)
        {
            putere=(1LL*putere*baza)%mod;
        }
        for ( int  i =0; i < mij; ++i)
        {
            cod = ((1LL * cod * baza)%mod + str[i])%mod;
        }
        f[cod]++;
        if(f[cod]>=k)
            ok=1;
        for ( DR = mij; DR < n; ++DR)
        {
            codnou = ((cod - (1LL * str[DR-mij] * putere)%mod) + mod)%mod;
            codnou  = ((1LL*codnou*baza)%mod + str[DR])%mod;
            f[codnou]++;
            if(f[codnou]>=k)
            {
                ok=1;
            }
            cod=codnou;
        }
        if(ok==1)
        {
            ans=mij;
            st=mij+1;
        }
        else
        {
            dr=mij-1;
        }
        for(i=0;i<=66973;i++)
        {
            f[i]=0;
        }
    }
    cout<<ans;
    return 0;
}