Cod sursa(job #3177500)

Utilizator paull122Paul Ion paull122 Data 29 noiembrie 2023 11:44:58
Problema Substr Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ifstream fin("substr.in");
ofstream fout("substr.out");
#define HASH_BASE 73
#define HASH_SIZE1 2007
#define HASH_SIZE2 2021


int f[2007][2021];
char a[17000];
int n,k;

int addhash(int strhash,char x,int hbase,int hsize)
{
    strhash = (strhash * hbase + x)%hsize;
    return strhash;
}

int main()
{
    fin >> n >> k;
    for(int i=1;i<=n;i++)
    {
        fin >> a[i];
    }
    int lmax=0;
    for(int i=1;i<=n;i++)
    {
        int strhash1=0,strhash2=0;
        for(int j=i;j<=n;j++)
        {
            strhash1 = addhash(strhash1,a[j],HASH_BASE,HASH_SIZE1);
            strhash2 = addhash(strhash2,a[j],HASH_BASE,HASH_SIZE2);
            f[strhash1][strhash2]++;
            if(f[strhash1][strhash2] >= k)
            {
                lmax=max(lmax,j-i+1);
            }
        }
    }
    fout << lmax;
}