void sort (char *a, int n) { if (n < 2) return; int m = n / 2; sort(a, m); sort(a + m, n - m); sort_sub(a, n, m); }
static url sort_sub (url add, url to) { if (is_or (to)) { if (add <= to[1]) return add | to; return to[1] | sort_sub (add, to[2]); } if (add <= to) return add | to; else return to | add; }
url sort (url u) { if (is_or (u)) return sort_sub (u[1], sort (u[2])); else return u; }