48 namespace Gecode {
namespace Set {
namespace Int {
71 return new (home)
MinElement(home,share,*
this);
94 assert(x0.cardMin()>=1);
98 unsigned int size = 0;
102 int* ub = r.
alloc<
int>(size*2);
106 ub[2*i+1] = ubr.max();
108 unsigned int x0cm = x0.cardMin()-1;
109 for (
unsigned int i=size; i--;) {
110 unsigned int width =
static_cast<unsigned int>(ub[2*i+1]-ub[2*
i]+1);
112 maxN =
static_cast<int>(ub[2*i+1]-x0cm);
168 if ((x0.cardMax() == 0) ||
169 ((x1.max() < x0.lubMin()) || (x1.min() > x0.lubMax())) ||
170 ((x0.glbSize() > 0) && (x0.glbMin() < x1.min())))
174 if (x1.assigned() && x1.val()==x0.lubMin()) {
180 if (x0.glbMin() == x0.lubMin()) {
187 if (x1.assigned() && x0.glbSize() > 0 && x1.val()==x0.glbMin()) {
188 unsigned int oldGlbSize = x0.glbSize();
201 if (!ur() || ur.
min()>x1.val()) {
229 int* _ur = r.
alloc<
int>(num_ranges*2);
233 _ur[2*
i ] = ur.min();
234 _ur[2*i+1] = ur.max();
238 unsigned int n = x0.cardMin();
240 for (
int i=num_ranges; i--; ) {
242 unsigned int num_values =
static_cast<unsigned int>(_ur[2*i+1]-_ur[2*
i]+1);
244 if (num_values >= n) {
246 nth_largest =
static_cast<int>(_ur[2*i+1]-n+1);
253 if (x1.min() > nth_largest)
265 Gecode::Int::
BoolView> (home, y0, y1, b2) {}
280 Gecode::Int::
BoolView> (home, share, p) {}
300 if ((x0.cardMax() == 0) ||
301 ((x1.max() < x0.lubMin()) || (x1.min() > x0.lubMax())) ||
302 ((x0.glbSize() > 0) && (x0.glbMin() < x1.min())))
308 if (x0.glbMin() == x0.lubMin()) {
311 if (x1.val() == x0.glbMin()) {
319 else if ((x0.glbMin() < x1.min()) ||
320 (x0.glbMin() > x1.max()) ||
408 return new (home)
MaxElement(home,share,*
this);
417 assert(x0.cardMin()>=1);
466 if ((x0.cardMax() == 0) ||
467 ((x1.max() < x0.lubMin()) || (x1.min() > x0.lubMax())) ||
468 ((x0.glbSize() > 0) && (x0.glbMax() > x1.max())))
472 if (x1.assigned() && x1.val()==x0.lubMax()) {
478 if (x0.glbMax() == x0.lubMax()) {
485 if (x1.assigned() && x0.glbSize() > 0 && x1.val()==x0.glbMax()) {
486 unsigned int oldGlbSize = x0.glbSize();
491 while (ur.
max() < x1.val()) {
497 if (ur.
width() == 1) {
520 unsigned int n = x0.cardMin();
523 if (ur.width() >= n) {
525 nth_smallest =
static_cast<int>(ur.min() + n - 1);
532 if (x1.max() < nth_smallest)
544 Gecode::Int::
BoolView> (home, y0, y1, b2) {}
551 Gecode::Int::
BoolView> (home, share, p) {}
580 if ((x0.cardMax() == 0) ||
581 ((x1.max() < x0.lubMin()) || (x1.min() > x0.lubMax())) ||
582 ((x0.glbSize() > 0) && (x0.glbMax() > x1.max())))
588 if (x0.glbMax() == x0.lubMax()) {
591 if (x1.val() == x0.glbMax()) {
599 else if ((x0.glbMax() < x1.min()) ||
600 (x0.glbMax() > x1.max()) ||
622 unsigned int n = x0.cardMin();
628 nth_smallest =
static_cast<int>(ur.min() + n - 1);
635 if (x1.max() < nth_smallest) {