#include #include #include std::vector split( const std::string & startline , const std::string & sep ) { std::vector separated ; std::string::size_type start { 0 } ; std::string::size_type pos ; do { pos = startline.find_first_of( sep , start ) ; separated.push_back( startline.substr(start , pos - start )) ; start = pos + 1 ; } while ( pos != std::string::npos ) ; return separated ; } std::vector find_left_array( const std::vector & numbers ) { int len = numbers.size( ) ; int limit = 0 ; if ( len % 2 == 1 ) limit = len / 2 + 1 ; else limit = len / 2 ; std::vector left_array ; left_array.push_back( 0 ) ; int left_sum = 0 ; for ( int i = 0 ; i < limit + 1 ; i++ ) { left_sum += numbers[ i ] ; left_array.push_back( left_sum ) ; } return left_array ; } std::vector find_right_array( const std::vector & numbers ) { int len = numbers.size( ) ; int left_limit = len / 2 - 1 ; std::vector right_array ; int right_sum = 0 ; for ( int i = left_limit ; i < len ; i++ ) right_sum += numbers[ i ] ; right_array.push_back( right_sum ) ; for ( int i = left_limit ; i < len ; i++ ) { right_sum -= numbers[ i ] ; right_array.push_back( right_sum ) ; } return right_array ; } int main( ) { std::cout << "Enter some integers, separated by blanks!\n" ; std::string line ; std::getline( std::cin , line ) ; std::vector numberstrings( split( line , " " ) ) ; std::vector numbers ; for ( auto s : numberstrings ) numbers.push_back( std::stoi( s ) ) ; if (numbers.size( ) == 1) std::cout << "(0)\n" ; else { std::vector result ; std::vector left_array( find_left_array( numbers )) ; std::vector right_array( find_right_array( numbers )) ; for ( int i = 0 ; i < left_array.size( ) ; i++ ) { result.push_back( std::abs( left_array[ i ] - right_array[ i ] )) ; } std::cout << "(" ; for ( int i : result ) { std::cout << i ; if ( i != result.back( ) ) std::cout << "," ; else std::cout << ")\n" ; } } return 0 ; }