38 namespace Gecode {
namespace Int {
namespace Sorted {
80 template<
class View,
bool Perm>
88 for (
int i = 0;
i < xs ;
i++) {
94 if (x[
i].val() != y[z[
i].val()].val()) {
97 if (z[
i].val() ==
i) {
105 if (x[
i].val() != y[
i].val()) {
191 while (sequence[x].parent != x) {
196 return sequence[x].
name;
202 while (sequence[x].parent != x) {
207 for (
int i = vsize;
i--; ) {
208 sequence[vertices[
i]].
parent = x;
211 return sequence[x].
name;
221 if (sequence[ra].rank > sequence[rb].rank) {
225 sequence[small].
parent = large;
226 sequence[large].
rank += sequence[small].
rank;
227 sequence[large].
name =
c;
228 sequence[
c].
root = large;
233 for(
int i = n;
i--; ){
272 return x[
i].min() <
x[j].min();
274 return x[
i].max() <
x[j].max();
301 return z[
i].min() <
z[j].min();
303 return z[
i].max() <
z[j].max();
306 return x[
i].min() <
x[j].min();
309 return x[
i].max() <
x[j].max();
327 if (x.min() == y.min()) {
328 return x.max() < y.max();
330 return x.min() < y.min();
358 if (x.
x.min() == y.
x.min()) {
359 if (x.
x.max() == y.
x.max()) {
360 if (x.
z.min() == y.
z.min()) {
361 return x.
z.max() < y.
z.max();
363 return x.
z.min() < y.
z.min();
366 return x.
x.max() < y.
x.max();
369 return x.
x.min() < y.
x.min();
381 template<
class View,
bool Perm>
392 bool x_complete =
true;
393 bool y_complete =
true;
394 bool z_complete =
true;
396 for (
int i = y.
size();
i--; ) {
405 for (
int i = x.
size();
i--; ) {
419 bool y_equality =
true;
420 for (
int i = y.
size() - 1;
i--; ) {
421 y_equality &= (y[
i].val() == y[
i + 1].val());
424 for (
int i = x.
size();
i--; ) {
442 for (
int i = x.
size();
i--; ) {
443 ModEvent me = y[z[
i].val()].eq(home, x[
i].val());
452 for (
int i = x.
size();
i--; ) {
453 ModEvent me = x[
i].eq(home, y[z[
i].val()].val());
464 for (
int i = x.
size();
i--; ) {
466 if (x[
i].
max() < y[pi].
min() ||
473 int gauss = ( (n * (n + 1)) / 2);
476 if (sum != gauss - n) {
497 for (
int i = n;
i--; ) {
521 me = x[
i].gq(home, y[v].
min());
528 me = y[
v].lq(home, x[
i].
max());
534 me = y[
v].gq(home, x[
i].
min());
551 me = x[
i].gq(home, y[l].
min());