#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <random>
#include <chrono>
#include <iterator>
#include <cmath>
using namespace std;
int main( )
{
default_random_engine gen( chrono:: system_clock :: now ( ) .time_since_epoch ( ) .count ( ) ) ;
uniform_real_distribution< double > distribution( - 99 , 99 ) ;
const int vector_size = 10 ;
vector< double > vec( vector_size) ;
generate_n( begin( vec) , vector_size, [ & ] { return distribution( gen) ; } ) ;
cout << fixed << setprecision( 1 ) ;
copy( begin( vec) , end( vec) , ostream_iterator< double > ( cout , ", " ) ) ;
auto absComp = [ ] ( double a, double b) { return abs ( a) < abs ( b) ; } ;
auto max = max_element( begin( vec) , end( vec) , absComp ) ;
cout << "\n (by absolute) max elements is " << * max << " at pos " << distance( begin( vec) , max ) ;
auto min = min_element( begin( vec) , end( vec) , absComp ) ;
cout << "\n (by absolute) min elements is " << * min << " at pos " << distance( begin( vec) , min ) ;
auto after_first_positive = begin( vec) ;
while ( * after_first_positive++ < 0.0 && after_first_positive ! = end( vec) ) ;
double sum = accumulate( after_first_positive, end( vec) , 0.0 ) ;
cout << "\n sum of elements after the first positive element is " << sum;
const double a = 10.0 ;
cout << "\n erasing elements less than " << a << endl;
vec.erase ( remove_if( begin( vec) , end( vec) , bind2nd( less< double > ( ) , a ) ) , end( vec) ) ;
copy( begin( vec) , end( vec) , ostream_iterator< double > ( cout , ", " ) ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHJhbmRvbT4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgICBkZWZhdWx0X3JhbmRvbV9lbmdpbmUgZ2VuKGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CiAgICB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4gZGlzdHJpYnV0aW9uKC05OSwgOTkpOwogICAgY29uc3QgaW50IHZlY3Rvcl9zaXplID0gMTA7Cgl2ZWN0b3I8ZG91YmxlPiB2ZWModmVjdG9yX3NpemUpOwoJZ2VuZXJhdGVfbiggYmVnaW4odmVjKSwgdmVjdG9yX3NpemUsIFsmXXsgcmV0dXJuIGRpc3RyaWJ1dGlvbihnZW4pOyB9ICk7CgoJY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMSk7Cgljb3B5KCBiZWdpbih2ZWMpLCBlbmQodmVjKSwgb3N0cmVhbV9pdGVyYXRvcjxkb3VibGU+KGNvdXQsICIsICIpICk7CgoJYXV0byBhYnNDb21wID0gW10oZG91YmxlIGEsIGRvdWJsZSBiKXsgcmV0dXJuIGFicyhhKSA8IGFicyhiKTsgfTsKICAgIGF1dG8gbWF4ID0gbWF4X2VsZW1lbnQoIGJlZ2luKHZlYyksIGVuZCh2ZWMpLCBhYnNDb21wICk7CiAgICBjb3V0IDw8ICJcbihieSBhYnNvbHV0ZSkgbWF4IGVsZW1lbnRzIGlzICIgPDwgKm1heCA8PCAiIGF0IHBvcyAiIDw8IGRpc3RhbmNlKCBiZWdpbih2ZWMpLCBtYXggKTsKCglhdXRvIG1pbiA9IG1pbl9lbGVtZW50KCBiZWdpbih2ZWMpLCBlbmQodmVjKSwgYWJzQ29tcCApOwogICAgY291dCA8PCAiXG4oYnkgYWJzb2x1dGUpIG1pbiBlbGVtZW50cyBpcyAiIDw8ICptaW4gPDwgIiBhdCBwb3MgIiA8PCBkaXN0YW5jZSggYmVnaW4odmVjKSwgbWluICk7CgogICAgYXV0byBhZnRlcl9maXJzdF9wb3NpdGl2ZSA9IGJlZ2luKHZlYyk7CiAgICB3aGlsZSAoKmFmdGVyX2ZpcnN0X3Bvc2l0aXZlKysgPCAwLjAgJiYgYWZ0ZXJfZmlyc3RfcG9zaXRpdmUgIT0gZW5kKHZlYykpOwoJZG91YmxlIHN1bSA9IGFjY3VtdWxhdGUoIGFmdGVyX2ZpcnN0X3Bvc2l0aXZlLCBlbmQodmVjKSwgMC4wICk7CiAgICBjb3V0IDw8ICJcbnN1bSBvZiBlbGVtZW50cyBhZnRlciB0aGUgZmlyc3QgcG9zaXRpdmUgZWxlbWVudCBpcyAiIDw8IHN1bTsKCgljb25zdCBkb3VibGUgYSA9IDEwLjA7CiAgICBjb3V0IDw8ICJcbmVyYXNpbmcgZWxlbWVudHMgbGVzcyB0aGFuICIgPDwgYSA8PCBlbmRsOwogICAgdmVjLmVyYXNlKHJlbW92ZV9pZiggYmVnaW4odmVjKSwgZW5kKHZlYyksIGJpbmQybmQoIGxlc3M8ZG91YmxlPigpLCBhICkgKSwgZW5kKHZlYykpOwoKICAgIGNvcHkoIGJlZ2luKHZlYyksIGVuZCh2ZWMpLCBvc3RyZWFtX2l0ZXJhdG9yPGRvdWJsZT4oY291dCwgIiwgIikgKTsKICAgIHJldHVybiAwOwp9
stdout
-41.0, -74.8, -75.3, -86.5, -19.5, -14.8, 62.8, -86.6, -67.0, 36.3,
(by absolute) max elements is -86.6 at pos 7
(by absolute) min elements is -14.8 at pos 5
sum of elements after the first positive element is -117.2
erasing elements less than 10.0
62.8, 36.3,