45 int lastElem = x.
size()-1;
52 for (
int i=0; i<lastElem; i++) {
53 if (x[i].glbSize() > 0)
54 cur_max = std::max(cur_max, x[i].glbMax());
55 if (x[i].cardMin() > 0)
56 cur_max = std::max(cur_max, x[i].lubMinN(x[i].cardMin()-1));
63 if (x[lastElem-i].lubSize() > 0) {
64 cur_min = std::min(cur_min, x[lastElem-i].glbMin());
65 if (x[lastElem-i].cardMin() > 0) {
71 ub[2*j]=ubr.min(); ub[2*j+1]=ubr.max();
73 unsigned int xcm = x[lastElem-i].cardMin()-1;
75 unsigned int width =
static_cast<unsigned int>(ub[2*j+1]-ub[2*j]+1);
77 maxN =
static_cast<int>(ub[2*j+1]-xcm);
82 cur_min = std::min(cur_min, maxN);
87 x[lastElem-i-1].
exclude(home, cur_min,
static const int MAX_OF_EMPTY
Returned by empty sets when asked for their maximum element.
static const int MIN_OF_EMPTY
Returned by empty sets when asked for their minimum element.
Range iterator for the least upper bound.
Array with arbitrary number of elements.
int size(void) const
Return size of array (number of elements).
ModEvent exclude(Space &home, View &x, int s)
Prune view x to exclude all values from s.
const int min
Smallest allowed integer in integer set.
const int max
Largest allowed integer in integer set.
Propagators for ordered sequences of sets.
ExecStatus propagateSeq(Space &home, bool &modified, bool &assigned, ViewArray< SetView > &x)
Gecode toplevel namespace
@ ES_NOFIX
Propagation has not computed fixpoint.
#define GECODE_SET_ME_CHECK_VAL_B(modified, tell, f)