X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fstatic_bitsequence%2Fsdarray.cpp;h=d0a4066905d0d150f6b5972fff73362af7bd0168;hb=8357cb440cfd7678784a186f04ca7375b1fe669c;hp=30cdf9e98d7454f3f6ede0fa1dba45ba252255d3;hpb=e149430065e70e25d32153a588c078cee53655f5;p=SXSI%2Flibcds.git diff --git a/src/static_bitsequence/sdarray.cpp b/src/static_bitsequence/sdarray.cpp index 30cdf9e..d0a4066 100644 --- a/src/static_bitsequence/sdarray.cpp +++ b/src/static_bitsequence/sdarray.cpp @@ -265,7 +265,7 @@ int selectd2_construct(selectd2 *select, int n, uchar *buf) { int i,m; int nl; int p,pp; - int il,is,ml,ms; + int il,is,ms,ml; int r; uint *s; @@ -302,6 +302,7 @@ int selectd2_construct(selectd2 *select, int n, uchar *buf) { for(int k=0;kp[k]=0; select->size += (nl+1)*sizeof(uint); + for (r = 0; r < 2; r++) { ml = ms = 0; for (il = 0; il < nl; il++) { @@ -309,7 +310,8 @@ int selectd2_construct(selectd2 *select, int n, uchar *buf) { select->lp[il] = pp; i = min((il+1)*L-1,m-1); p = s[i]; - //printf("%d ",p-pp); + // printf("p-pp=%d, LL=%d\n",p-pp, LL); + if (p - pp >= LL) { if (r == 1) { for (is = 0; is < L; is++) { @@ -317,6 +319,7 @@ int selectd2_construct(selectd2 *select, int n, uchar *buf) { select->sl[ml*L+is] = s[il*L+is]; } } + select->p[il] = -((ml<sl = new uint[ml*L+1]; for(int k=0;ksl[k]=0;