- #include <algorithm> 
- #include <cmath> 
- #include <iomanip> 
- #include <iostream> 
- #include <iterator> 
- #include <numeric> 
- #include <vector> 
-   
- namespace detail { 
- template <typename ForwardIterator> 
- auto mean(ForwardIterator first, ForwardIterator last, 
-           const std::size_t elements_count) { 
-   const auto sum_of_elements = std::accumulate(first, last, 0.0); 
-   return sum_of_elements / elements_count; 
- } 
-   
- template <typename ForwardIterator> 
- auto variance(ForwardIterator first, ForwardIterator last, 
-               const double elements_mean) { 
-   auto VarianceAccumulator = [elements_mean](auto total, auto next_value) { 
-     const auto diff = next_value - elements_mean; 
-     return total + (diff * diff); 
-   }; 
-   
-   return std::accumulate(first, last, 0.0, VarianceAccumulator); 
- } 
- } //namespace 
-   
- template <typename ForwardIterator> 
- auto mean(ForwardIterator first, ForwardIterator last) { 
-   const auto element_count = std::distance(first, last); 
-   return detail::mean(first, last, element_count); 
- } 
-   
- template <typename ForwardIterator> 
- auto standard_deviation(ForwardIterator first, ForwardIterator last) { 
-   const auto elements_count = std::distance(first, last); 
-   const auto elements_mean = detail::mean(first, last, elements_count); 
-   const auto elements_variance = detail::variance(first, last, elements_mean); 
-   
-   return std::sqrt(elements_variance / elements_count); 
- } 
-   
- template <typename ForwardIterator> 
- void print_standard_deviation(ForwardIterator first, ForwardIterator last, 
-                               std::ostream &out) { 
-   std::copy(first, last, std::ostream_iterator<int>(out, " ")); 
-   out << "\nStandard Deviation: " << std::setprecision(4) << std::fixed 
-       << standard_deviation(first, last) << '\n' << '\n'; 
- } 
-   
- int main() { 
-   std::vector<std::vector<int>> inputs{ 
-       {5, 6, 11, 13, 19, 20, 25, 26, 28, 37}, 
-       {37, 81, 86, 91, 97, 108, 109, 112, 112, 114, 115, 117, 121, 123, 141}, 
-       {266, 344, 375, 399, 409, 433, 436, 440, 449, 476, 502, 504, 530, 584, 
-        587}, 
-       {809, 816, 833, 849, 851, 961, 976, 1009, 1069, 1125, 1161, 1172, 1178, 
-        1187, 1208, 1215, 1229, 1241, 1260, 1373}}; 
-   
-   for (const auto &input : inputs) { 
-     print_standard_deviation(input.begin(), input.end(), std::cout); 
-   } 
- } 
				I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxudW1lcmljPgojaW5jbHVkZSA8dmVjdG9yPgoKbmFtZXNwYWNlIGRldGFpbCB7CnRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CmF1dG8gbWVhbihGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LAogICAgICAgICAgY29uc3Qgc3RkOjpzaXplX3QgZWxlbWVudHNfY291bnQpIHsKICBjb25zdCBhdXRvIHN1bV9vZl9lbGVtZW50cyA9IHN0ZDo6YWNjdW11bGF0ZShmaXJzdCwgbGFzdCwgMC4wKTsKICByZXR1cm4gc3VtX29mX2VsZW1lbnRzIC8gZWxlbWVudHNfY291bnQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CmF1dG8gdmFyaWFuY2UoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICBjb25zdCBkb3VibGUgZWxlbWVudHNfbWVhbikgewogIGF1dG8gVmFyaWFuY2VBY2N1bXVsYXRvciA9IFtlbGVtZW50c19tZWFuXShhdXRvIHRvdGFsLCBhdXRvIG5leHRfdmFsdWUpIHsKICAgIGNvbnN0IGF1dG8gZGlmZiA9IG5leHRfdmFsdWUgLSBlbGVtZW50c19tZWFuOwogICAgcmV0dXJuIHRvdGFsICsgKGRpZmYgKiBkaWZmKTsKICB9OwogIAogIHJldHVybiBzdGQ6OmFjY3VtdWxhdGUoZmlyc3QsIGxhc3QsIDAuMCwgVmFyaWFuY2VBY2N1bXVsYXRvcik7Cn0KfSAvL25hbWVzcGFjZQoKdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KYXV0byBtZWFuKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpIHsKICBjb25zdCBhdXRvIGVsZW1lbnRfY291bnQgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKICByZXR1cm4gZGV0YWlsOjptZWFuKGZpcnN0LCBsYXN0LCBlbGVtZW50X2NvdW50KTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KYXV0byBzdGFuZGFyZF9kZXZpYXRpb24oRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCkgewogIGNvbnN0IGF1dG8gZWxlbWVudHNfY291bnQgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKICBjb25zdCBhdXRvIGVsZW1lbnRzX21lYW4gPSBkZXRhaWw6Om1lYW4oZmlyc3QsIGxhc3QsIGVsZW1lbnRzX2NvdW50KTsKICBjb25zdCBhdXRvIGVsZW1lbnRzX3ZhcmlhbmNlID0gZGV0YWlsOjp2YXJpYW5jZShmaXJzdCwgbGFzdCwgZWxlbWVudHNfbWVhbik7CgogIHJldHVybiBzdGQ6OnNxcnQoZWxlbWVudHNfdmFyaWFuY2UgLyBlbGVtZW50c19jb3VudCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CnZvaWQgcHJpbnRfc3RhbmRhcmRfZGV2aWF0aW9uKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSAmb3V0KSB7CiAgc3RkOjpjb3B5KGZpcnN0LCBsYXN0LCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8aW50PihvdXQsICIgIikpOwogIG91dCA8PCAiXG5TdGFuZGFyZCBEZXZpYXRpb246ICIgPDwgc3RkOjpzZXRwcmVjaXNpb24oNCkgPDwgc3RkOjpmaXhlZAogICAgICA8PCBzdGFuZGFyZF9kZXZpYXRpb24oZmlyc3QsIGxhc3QpIDw8ICdcbicgPDwgJ1xuJzsKfQoKaW50IG1haW4oKSB7CiAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50Pj4gaW5wdXRzewogICAgICB7NSwgNiwgMTEsIDEzLCAxOSwgMjAsIDI1LCAyNiwgMjgsIDM3fSwKICAgICAgezM3LCA4MSwgODYsIDkxLCA5NywgMTA4LCAxMDksIDExMiwgMTEyLCAxMTQsIDExNSwgMTE3LCAxMjEsIDEyMywgMTQxfSwKICAgICAgezI2NiwgMzQ0LCAzNzUsIDM5OSwgNDA5LCA0MzMsIDQzNiwgNDQwLCA0NDksIDQ3NiwgNTAyLCA1MDQsIDUzMCwgNTg0LAogICAgICAgNTg3fSwKICAgICAgezgwOSwgODE2LCA4MzMsIDg0OSwgODUxLCA5NjEsIDk3NiwgMTAwOSwgMTA2OSwgMTEyNSwgMTE2MSwgMTE3MiwgMTE3OCwKICAgICAgIDExODcsIDEyMDgsIDEyMTUsIDEyMjksIDEyNDEsIDEyNjAsIDEzNzN9fTsKCiAgZm9yIChjb25zdCBhdXRvICZpbnB1dCA6IGlucHV0cykgewogICAgcHJpbnRfc3RhbmRhcmRfZGV2aWF0aW9uKGlucHV0LmJlZ2luKCksIGlucHV0LmVuZCgpLCBzdGQ6OmNvdXQpOwogIH0KfQ==