#include <algorithm>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
#include <vector>
using namespace std;
int main( ) {
istringstream fin( "95 100 120 130 135 145 155 185 190 160 130 120" ) ;
const vector< int > vec{ istream_iterator< int > ( fin) , istream_iterator< int > ( ) } ;
cout << "The year's average monthly rainfall was " << accumulate( cbegin( vec) , cend( vec) , 0.0 ) / vec.size ( ) << endl;
const auto its = minmax_element( cbegin( vec) , cend( vec) ) ;
const tm minimum{ 0 , 0 , 0 , 1 , distance( cbegin( vec) , its.first ) } ;
const tm maximum{ 0 , 0 , 0 , 1 , distance( cbegin( vec) , its.second ) } ;
cout << put_time( & minimum, "%B" ) << " has the highest rainfall (" << * its.first << "mm)\n " << put_time( & maximum, "%B" ) << " has the lowest rainfall (" << * its.second << "mm)\n " ;
cout << "Month Rainfall(mm) Classification\n " << left;
char month[ 10 ] ;
for ( tm i{ 0 , 0 , 0 , 1 , 0 } ; i.tm_mon < vec.size ( ) ; ++ i.tm_mon ) {
strftime ( month, 10 , "%B" , & i) ;
if ( vec[ i.tm_mon ] <= 100 ) {
cout << setw( 9 ) << month << setw( 15 ) << vec[ i.tm_mon ] << "Dry\n " ;
} else if ( vec[ i.tm_mon ] <= 159 ) {
cout << setw( 9 ) << month << setw( 15 ) << vec[ i.tm_mon ] << "Average\n " ;
} else {
cout << setw( 9 ) << month << setw( 15 ) << vec[ i.tm_mon ] << "Rainy\n " ;
}
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxudW1lcmljPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWlzdHJpbmdzdHJlYW0gZmluKCI5NSAxMDAgMTIwIDEzMCAxMzUgMTQ1IDE1NSAxODUgMTkwIDE2MCAxMzAgMTIwIik7Cgljb25zdCB2ZWN0b3I8aW50PiB2ZWN7IGlzdHJlYW1faXRlcmF0b3I8aW50PihmaW4pLCBpc3RyZWFtX2l0ZXJhdG9yPGludD4oKSB9OwkKCgljb3V0IDw8ICJUaGUgeWVhcidzIGF2ZXJhZ2UgbW9udGhseSByYWluZmFsbCB3YXMgIiA8PCBhY2N1bXVsYXRlKGNiZWdpbih2ZWMpLCBjZW5kKHZlYyksIDAuMCkgLyB2ZWMuc2l6ZSgpIDw8IGVuZGw7CgkKCWNvbnN0IGF1dG8gaXRzID0gbWlubWF4X2VsZW1lbnQoY2JlZ2luKHZlYyksIGNlbmQodmVjKSk7Cgljb25zdCB0bSBtaW5pbXVtezAsIDAsIDAsIDEsIGRpc3RhbmNlKGNiZWdpbih2ZWMpLCBpdHMuZmlyc3QpfTsKCWNvbnN0IHRtIG1heGltdW17MCwgMCwgMCwgMSwgZGlzdGFuY2UoY2JlZ2luKHZlYyksIGl0cy5zZWNvbmQpfTsKCQoJY291dCA8PCBwdXRfdGltZSgmbWluaW11bSwgIiVCIikgPDwgIiBoYXMgdGhlIGhpZ2hlc3QgcmFpbmZhbGwgKCIgPDwgKml0cy5maXJzdCA8PCAibW0pXG4iIDw8IHB1dF90aW1lKCZtYXhpbXVtLCAiJUIiKSA8PCAiIGhhcyB0aGUgbG93ZXN0IHJhaW5mYWxsICgiIDw8ICppdHMuc2Vjb25kIDw8ICJtbSlcbiI7CgkKCWNvdXQgPDwgIk1vbnRoICAgIFJhaW5mYWxsKG1tKSAgIENsYXNzaWZpY2F0aW9uXG4iIDw8IGxlZnQ7CgkKCWNoYXIgbW9udGhbMTBdOwkKCQoJZm9yICh0bSBpeyAwLCAwLCAwLCAxLCAwIH07IGkudG1fbW9uIDwgdmVjLnNpemUoKTsgKytpLnRtX21vbikgewoJCXN0cmZ0aW1lKG1vbnRoLCAxMCwgIiVCIiwgJmkpOwoKCQlpZiAodmVjW2kudG1fbW9uXSA8PSAxMDApIHsKCQkJY291dCA8PCBzZXR3KDkpIDw8IG1vbnRoIDw8IHNldHcoMTUpIDw8IHZlY1tpLnRtX21vbl0gPDwgIkRyeVxuIjsKCQl9IGVsc2UgaWYgKHZlY1tpLnRtX21vbl0gPD0gMTU5KSB7CgkJCWNvdXQgPDwgc2V0dyg5KSA8PCBtb250aCA8PCBzZXR3KDE1KSA8PCB2ZWNbaS50bV9tb25dIDw8ICJBdmVyYWdlXG4iOwoJCX0gZWxzZSB7CgkJCWNvdXQgPDwgc2V0dyg5KSA8PCBtb250aCA8PCBzZXR3KDE1KSA8PCB2ZWNbaS50bV9tb25dIDw8ICJSYWlueVxuIjsKCQl9Cgl9CQp9