42 namespace Gecode {
namespace Int {
namespace Sequence {
44 template<
class View,
class Val>
47 int q0,
int l0,
int u0)
48 :
Propagator(home), x(x0), s(s0), q(q0), l(l0), u(u0),
49 vvsamax(home,x,s0,q0), vvsamin(home,x,s0,q0), ac(home) {
51 for (
int i=x.size();
i--; ) {
60 template<
class View,
class Val>
63 :
Propagator(home,share,p), s(p.s), q(p.q), l(p.l), u(p.u),
64 vvsamax(), vvsamin() {
65 x.update(home,share,p.x);
66 ac.update(home,share,p.ac);
67 vvsamax.
update(home,share,p.vvsamax);
68 vvsamin.
update(home,share,p.vvsamin);
71 template<
class View,
class Val>
75 ExecStatus status = vvsamax.advise(home,x,s,q,a.
i,d);
76 if (
ES_NOFIX == vvsamin.advise(home,x,s,q,a.
i,d) ) {
81 if (!x[a.
i].assigned())
82 x[a.
i].cancel(home,a);
94 template<
class View,
class Val>
101 return sizeof(*this);
104 template<
class View,
class Val>
113 for (
int j=0; j<x.
size(); j++ ) {
114 upper[j+1] = upper[j];
115 lower[j+1] = lower[j];
121 if ( j+1 >= q && (q - l < lower[j+1] - lower[j+1-q] || upper[j+1] - upper[j+1-q] > u) ) {
128 template<
class View,
class Val>
140 template<
class View,
class Val>
146 template<
class View,
class Val>
152 template<
class View,
class Val>
158 for (
int i=x.
size();
i--; )