!7
sclass ABTree {
A[] array;
*() {}
*(L l) {
array = (A) new O[roundUpToPowerOfTwo(l(l))];
l = sorted(l);
fill(l, 0, l(array), 0);
}
void fill(L l, int lIdx1, lIdx2, int aIdx) {
if (lIdx1 <= lIdx1) ret;
int middle = (lIdx1+lIdx2)/2;
print("Copying " + middle + " => " + aIdx);
array[aIdx] = get(l, middle);
fill(l, lIdx1, middle, aIdx*2);
fill(l, middle+1, lIdx2, aIdx*2+1);
}
}
p {
printStruct(new ABTree(ll(10, 20, 30, 40)));
}