Exemplo n.º 1
0
 public void typeB(int i, int j, int k) {
   /* k reflex, i not. */
   // System.out.print("\nB "+i+","+j+","+k+":");
   if (!visible(j, k)) return;
   int top = j;
   int w = subD.weight(j, k);
   if (j - i > 1) {
     if (!visible(i, j)) return;
     w += subD.weight(i, j) + 1;
   }
   if (k - j > 1) { // check if must use jk, too.
     PairDeque pair = subD.pairs(j, k);
     if (!Point.right(sp.p(i), sp.p(j), sp.p(pair.aF()))) {
       while (pair.more1() && !Point.right(sp.p(i), sp.p(j), sp.p(pair.underaF()))) pair.pop();
       if ((!pair.empty()) && !Point.left(sp.p(i), sp.p(k), sp.p(pair.bF()))) top = pair.bF();
       else w++; // yes, use jk. top=j already
     } else w++; // yes, use jk. top=j already
   }
   update(i, k, w, j, top);
 }