#include <iostream>
#include <locale>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#include <functional>
#include <numeric>
#include <iterator>
#include <limits>
struct R { int operator()() const { return rand() % 21 - 10; } }; template <typename Iterator>
Iterator next(Iterator it) { std::advance(it, 1); return it; } template <typename Iterator>
void print(Iterator begin, Iterator end) { typedef std::ostream_iterator<typename std::iterator_traits<Iterator>::value_type> O;
std::copy(begin, end, O(std::cout, " ")); std::cout << std::endl; } template <typename Iterator, typename F>
void find(Iterator begin, Iterator end, F f) { typedef typename std::iterator_traits<Iterator>::value_type T;
struct { T sum; Iterator begin, end; } max = { std::numeric_limits<T>::min(), begin, end }; std::cout <<
"All Sequence: " << std::endl; print(max.begin, max.end); for (; (begin = std::find_if(begin, end, f)) != end;)
{ Iterator seq_end = std::find_if(next(begin), end, std::not1(f)); T sum = std::accumulate(begin, seq_end, T());
if (sum > max.sum) { max.sum = sum; max.begin = begin; max.end = seq_end; } begin = seq_end; } if
(max.sum != std::numeric_limits<T>::min()) { std::cout << "Sequence with a maximum sum: " << std::endl;
print(max.begin, max.end); } else std::cout << "Sequence doesn't have positive numbers" << std::endl; }
int main() { std::locale::global(std::locale("")); srand((unsigned) time(NULL)); int arr[20]; std::generate(arr,
arr + sizeof(arr) / sizeof(arr[0]), R()); ::find(arr, arr + sizeof(arr) / sizeof(arr[0]), std::bind2nd(std::greater<int>(), 0));
return 0; }
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bG9jYWxlPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx0aW1lLmg+IAojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGxpbWl0cz4Kc3RydWN0IFIgeyBpbnQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgcmV0dXJuIHJhbmQoKSAlIDIxIC0gMTA7IH0gfTsgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KSXRlcmF0b3IgbmV4dChJdGVyYXRvciBpdCkgeyBzdGQ6OmFkdmFuY2UoaXQsIDEpOyByZXR1cm4gaXQ7IH0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4Kdm9pZCBwcmludChJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKSB7IHR5cGVkZWYgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gTzsKc3RkOjpjb3B5KGJlZ2luLCBlbmQsIE8oc3RkOjpjb3V0LCAiICIpKTsgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsgfSB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIEY+CnZvaWQgZmluZChJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kLCBGIGYpIHsgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgVDsKc3RydWN0IHsgVCBzdW07IEl0ZXJhdG9yIGJlZ2luLCBlbmQ7IH0gbWF4ID0geyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSwgYmVnaW4sIGVuZCB9OyBzdGQ6OmNvdXQgPDwKIkFsbCBTZXF1ZW5jZTogIiA8PCBzdGQ6OmVuZGw7IHByaW50KG1heC5iZWdpbiwgbWF4LmVuZCk7IGZvciAoOyAoYmVnaW4gPSBzdGQ6OmZpbmRfaWYoYmVnaW4sIGVuZCwgZikpICE9IGVuZDspCnsgSXRlcmF0b3Igc2VxX2VuZCA9IHN0ZDo6ZmluZF9pZihuZXh0KGJlZ2luKSwgZW5kLCBzdGQ6Om5vdDEoZikpOyBUIHN1bSA9IHN0ZDo6YWNjdW11bGF0ZShiZWdpbiwgc2VxX2VuZCwgVCgpKTsKaWYgKHN1bSA+IG1heC5zdW0pIHsgbWF4LnN1bSA9IHN1bTsgbWF4LmJlZ2luID0gYmVnaW47IG1heC5lbmQgPSBzZXFfZW5kOyB9IGJlZ2luID0gc2VxX2VuZDsgfSBpZgoobWF4LnN1bSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSkgeyBzdGQ6OmNvdXQgPDwgIlNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHN1bTogIiA8PCBzdGQ6OmVuZGw7CnByaW50KG1heC5iZWdpbiwgbWF4LmVuZCk7IH0gZWxzZSBzdGQ6OmNvdXQgPDwgIlNlcXVlbmNlIGRvZXNuJ3QgaGF2ZSBwb3NpdGl2ZSBudW1iZXJzIiA8PCBzdGQ6OmVuZGw7IH0KaW50IG1haW4oKSB7IHN0ZDo6bG9jYWxlOjpnbG9iYWwoc3RkOjpsb2NhbGUoIiIpKTsgc3JhbmQoKHVuc2lnbmVkKSB0aW1lKE5VTEwpKTsgaW50IGFyclsyMF07IHN0ZDo6Z2VuZXJhdGUoYXJyLAphcnIgKyBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pLCBSKCkpOyA6OmZpbmQoYXJyLCBhcnIgKyBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pLCBzdGQ6OmJpbmQybmQoc3RkOjpncmVhdGVyPGludD4oKSwgMCkpOwpyZXR1cm4gMDsgfSAg