#include #include #include #include #include #include int main(int argc, char* argv[]) { int thread_count = omp_get_max_threads(); if ( argc >= 2 ) thread_count = atoi(argv[1]); std::vector values; std::copy(std::istream_iterator(std::cin), std::istream_iterator(), std::back_inserter(values)); double sum = 0; #pragma omp parallel for num_threads(thread_count) schedule(static) \ default(none) shared(values) reduction(+:sum) for ( size_t index = 0; index < values.size(); ++index ) sum += values[index]; std::cout << sum / values.size() << std::endl; return 0; }