42 namespace Gecode {
namespace Int {
namespace Sequence {
44 template<
class View,
class Val>
47 int q0,
int l0,
int u0)
49 vvsamax(home,
x,s0,q0), vvsamin(home,
x,s0,q0), ac(home) {
51 for (
int i=x.size();
i--; ) {
65 static void update(Val&
n,
Space& home,
bool share, Val& old);
69 class UpdateVal<int> {
71 static void update(
int&
n,
Space&,
bool,
int& old) {
77 class UpdateVal<IntSet> {
79 static void update(IntSet&
n, Space& home,
bool share,
81 n.update(home,share,old);
86 template<
class View,
class Val>
90 vvsamax(), vvsamin() {
91 UpdateVal<Val>::update(s,home,share,p.s);
92 x.update(home,share,p.x);
93 ac.update(home,share,p.ac);
94 vvsamax.
update(home,share,p.vvsamax);
95 vvsamin.
update(home,share,p.vvsamin);
98 template<
class View,
class Val>
103 if (
ES_NOFIX == vvsamin.advise(home,
x,s,q,a.
i,d) ) {
108 if (!
x[a.
i].assigned())
109 x[a.
i].cancel(home,a);
121 template<
class View,
class Val>
128 return sizeof(*this);
131 template<
class View,
class Val>
140 for (
int j=0; j<x.
size(); j++ ) {
141 upper[j+1] = upper[j];
142 lower[j+1] = lower[j];
148 if ( j+1 >= q && (q - l < lower[j+1] - lower[j+1-q] || upper[j+1] - upper[j+1-q] > u) ) {
155 template<
class View,
class Val>
167 template<
class View,
class Val>
173 template<
class View,
class Val>
179 template<
class View,
class Val>
185 for (
int i=
x.size();
i--; )