#include <iostream>
#include <list>
#include <vector>
std::vector< std::list<int> > & split( std::list<int> v,
int delim, std::vector< std::list<int> >& elems) {
int i = 0;
auto it = v.begin();
while ( it != v.end()) {
std::list<int> l;
auto it3 = l.begin();
while ( it != v.end() && *it < delim) {
l.splice( it3, v, it);
it = v.begin();
}
if( it != v.end()) {
l.splice( it3, v, it);
it = v.begin();
}
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, 5, 9};
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++;
++i;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0ZDo6dmVjdG9yPCBzdGQ6Omxpc3Q8aW50PiA+ICYgc3BsaXQoIHN0ZDo6bGlzdDxpbnQ+ICB2LAogICAgICAgICAgICAgICAgICAgaW50IGRlbGltLCBzdGQ6OnZlY3Rvcjwgc3RkOjpsaXN0PGludD4gPiYgZWxlbXMpIHsKCiAgICBpbnQgaSA9IDA7CiAgICBhdXRvIGl0ID0gdi5iZWdpbigpOwoKICAgIHdoaWxlICggaXQgIT0gdi5lbmQoKSkgewogICAgCXN0ZDo6bGlzdDxpbnQ+IGw7CiAgICAJYXV0byBpdDMgPSBsLmJlZ2luKCk7CiAgICAgICAgd2hpbGUgKCBpdCAhPSB2LmVuZCgpICYmICppdCA8IGRlbGltKSB7CiAgICAgICAgICAgIGwuc3BsaWNlKCBpdDMsIHYsIGl0KTsKICAgICAgICAgICAgaXQgPSB2LmJlZ2luKCk7CiAgICAgICAgfQogICAgICAgIGlmKCBpdCAhPSB2LmVuZCgpKSB7CiAgICAgICAgCWwuc3BsaWNlKCBpdDMsIHYsIGl0KTsKICAgICAgICAgICAgaXQgPSB2LmJlZ2luKCk7CiAgICAgICAgfQogICAgICAgIGVsZW1zLnB1c2hfYmFjayggbCk7CiAgICB9CiAgICByZXR1cm4gZWxlbXM7Cn0KCgpzdGQ6OnZlY3Rvcjwgc3RkOjpsaXN0PGludD4gPiBzcGxpdCggY29uc3Qgc3RkOjpsaXN0PGludD4gICZ2LCBpbnQgZGVsaW0pIHsKICAgIHN0ZDo6dmVjdG9yPCBzdGQ6Omxpc3Q8aW50PiA+IGVsZW1zOwogICAgc3BsaXQoIHYsIGRlbGltLCBlbGVtcyk7CiAgICByZXR1cm4gZWxlbXM7Cn0KCmludCBtYWluKCkgewoKCXN0ZDo6bGlzdDxpbnQ+IHYgPSB7IDEsIDIsIDMsIDUwMywgNSwgNiwgNTAyLCA3LCA1MTAsIDMsIDUwMCwgNSwgOX07CglzdGQ6OnZlY3Rvcjwgc3RkOjpsaXN0PGludD4gPiB2bDsKCXZsID0gc3BsaXQoIHYsIDUwMCk7CgkKCWludCBpID0gMDsKCXdoaWxlKCBpIDwgdmwuc2l6ZSgpKSB7CgkgICAgc3RkOjpsaXN0PGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdmxbIGldLmJlZ2luKCk7CgkJd2hpbGUoIGl0ICE9ICB2bFsgaV0uZW5kKCkpCgkJICAgIHN0ZDo6Y291dCA8PCAqaXQrKzsKCQkrK2k7Cgl9CgkKCXJldHVybiAwOwp9