#include <iostream>
#include <list>
#include <vector>
std::vector< std::list<int> > & split( std::list<int> v,
int delim, std::vector< std::list<int> >& elems) {
auto it = v.begin();
while ( it != v.end()) {
std::list<int> l;
while ( it != v.end() && *it < delim) {
++it;
}
if( it != v.end()) {
l.splice( l.begin(), v, v.begin(), ++it);
it = v.begin();
} else {
l.splice( l.begin(), v, v.begin(), it);
}
elems.push_back( l);
}
return elems;
}
std::vector< std::list<int> > split( const std::list<int> &v, int delim) {
std::vector< std::list<int> > elems;
split( v, delim, elems);
return elems;
}
int main() {
std::list<int> v = { 1, 2, 3, 503, 5, 6, 502, 7, 510, 3, 500, 6, 7};
std::vector< std::list<int> > vl;
vl = split( v, 500);
int i = 0;
while( i < vl.size()) {
std::list<int>::const_iterator it = vl[ i].begin();
while( it != vl[ i].end())
std::cout << *it++;
std::cout << std::endl;
++i;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0ZDo6dmVjdG9yPCBzdGQ6Omxpc3Q8aW50PiA+ICYgc3BsaXQoIHN0ZDo6bGlzdDxpbnQ+ICB2LAogICAgICAgICAgICAgICAgICAgaW50IGRlbGltLCBzdGQ6OnZlY3Rvcjwgc3RkOjpsaXN0PGludD4gPiYgZWxlbXMpIHsKCiAgICBhdXRvIGl0ID0gdi5iZWdpbigpOwoKICAgIHdoaWxlICggaXQgIT0gdi5lbmQoKSkgewogICAgCXN0ZDo6bGlzdDxpbnQ+IGw7CgogICAgICAgIHdoaWxlICggaXQgIT0gdi5lbmQoKSAmJiAqaXQgPCBkZWxpbSkgewogICAgICAgICAgICArK2l0OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiggaXQgIT0gdi5lbmQoKSkgewogICAgICAgIAlsLnNwbGljZSggbC5iZWdpbigpLCB2LCB2LmJlZ2luKCksICsraXQpOwogICAgICAgICAgICBpdCA9IHYuYmVnaW4oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgIAlsLnNwbGljZSggbC5iZWdpbigpLCB2LCB2LmJlZ2luKCksIGl0KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxlbXMucHVzaF9iYWNrKCBsKTsKICAgIH0KICAgIHJldHVybiBlbGVtczsKfQoKCnN0ZDo6dmVjdG9yPCBzdGQ6Omxpc3Q8aW50PiA+IHNwbGl0KCBjb25zdCBzdGQ6Omxpc3Q8aW50PiAgJnYsIGludCBkZWxpbSkgewogICAgc3RkOjp2ZWN0b3I8IHN0ZDo6bGlzdDxpbnQ+ID4gZWxlbXM7CiAgICBzcGxpdCggdiwgZGVsaW0sIGVsZW1zKTsKICAgIHJldHVybiBlbGVtczsKfQoKaW50IG1haW4oKSB7CgoJc3RkOjpsaXN0PGludD4gdiA9IHsgMSwgMiwgMywgNTAzLCA1LCA2LCA1MDIsIDcsIDUxMCwgMywgNTAwLCA2LCA3fTsKCXN0ZDo6dmVjdG9yPCBzdGQ6Omxpc3Q8aW50PiA+IHZsOwoJdmwgPSBzcGxpdCggdiwgNTAwKTsKCQoJaW50IGkgPSAwOwoJd2hpbGUoIGkgPCB2bC5zaXplKCkpIHsKCSAgICBzdGQ6Omxpc3Q8aW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB2bFsgaV0uYmVnaW4oKTsKCQl3aGlsZSggaXQgIT0gIHZsWyBpXS5lbmQoKSkKCQkgICAgc3RkOjpjb3V0IDw8ICppdCsrOwoJCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgkJKytpOwoJfQoJCglyZXR1cm4gMDsKfQ==