Milk Patterns POJ - 3261

http://poj.org/problem?id=3261

先把序列离散化一下 还是二分长度 看height数组中是否有连续k-1个数大于等于枚举值

#include 
#include 
#include 
using namespace std;
const int maxn=2e4+10;

int ary[maxn],tmp[maxn],rnk[maxn],hgt[maxn],t1[maxn],t2[maxn],sum[maxn],sa[maxn];
int n,k,len;

void getsa(int *r,int *sa,int n,int m)
{
    int *x,*y,*t;
    int i,j,p;
    x=t1,y=t2;
    for(i=0;i=0;i--) sa[--sum[x[i]]]=i;
    for(p=1,j=1;p=j) y[p++]=sa[i]-j;
        for(i=0;i=0;i--) sa[--sum[x[y[i]]]]=y[i];
        t=x,x=y,y=t;
        x[sa[0]]=0;
        for(p=1,i=1;i=lim) cnt++;
        else cnt=1;
        maxx=max(maxx,cnt);
    }
    if(maxx>=k) return 1;
    else return 0;
}

int main()
{
    int i,l,r,m,ans;
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        for(i=0;i

 

你可能感兴趣的:(后缀数组)