final
[SXSI/XMLTree.git] / libcds / src / static_bitsequence / sdarray.cpp
index 96810fe..949726a 100644 (file)
@@ -666,22 +666,24 @@ int selects3_select(selects3 *select, int i) {
   if (i == 0) return -1;
 
   d = select->d;
-       if(select->lasti==(uint)i-1) {
+       /*if(select->lasti==(uint)i-1) {
                while(!__getbit2(select->sd1->buf,++select->lasts));
        } 
        else {
          select->lasts = selectd2_select(select->sd1,i,1);
        }
-       select->lasti = i;
+       select->lasti = i;*/
        //lasts3 = select;
-  x = (select->lasts-(i-1)) << d;
+       x = selectd2_select(select->sd1,i,1) - (i-1);
+  //x = (select->lasts-(i-1)) << d;
+  x <<= d;
   x += __getbits(select->low,(i-1)*d,d);
   return x;
 }
 
 
 int selects3_selectnext(selects3 *select, int i) {
-       return selects3_select(select,selects3_rank(select,i)+1);
+       //return selects3_select(select,selects3_rank(select,i)+1);
   int d,x,w,y;
   int r,j;
   int z,ii;