aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-074/ulrich-rieke/cpp/ch-1.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/challenge-074/ulrich-rieke/cpp/ch-1.cpp b/challenge-074/ulrich-rieke/cpp/ch-1.cpp
new file mode 100644
index 0000000000..60014664c9
--- /dev/null
+++ b/challenge-074/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,32 @@
+#include <vector>
+#include <set>
+#include <algorithm>
+#include <iostream>
+#include <cmath>
+
+int main( ) {
+ int num = 0 ;
+ std::vector<int> numbers ;
+ std::cout << "Enter numbers , -1 to end!\n" ;
+ std::cin >> num ;
+ while ( num != -1 ) {
+ numbers.push_back( num ) ;
+ std::cin >> num ;
+ }
+ std::set<int> numSet ;
+ for ( int i : numbers )
+ numSet.insert( i ) ; //unique numbers only
+ //create a vector to sort the numbers more easily
+ std::vector<int> differentNums( numSet.begin( ) , numSet.end( ) ) ;
+ std::sort( differentNums.begin( ) , differentNums.end( ) ,
+ [&numbers]( int a , int b ) { return std::count( numbers.begin( ),
+ numbers.end( ) , a ) > std::count( numbers.begin( ) ,
+ numbers.end( ) , b ) ; } ) ;
+ int maxFound = std::count( numbers.begin( ) , numbers.end( ) ,
+ *differentNums.begin( ) ) ;
+ if ( maxFound > floor( static_cast<double>( numbers.size( ) ) / 2 ) )
+ std::cout << '\n' << *differentNums.begin( ) << std::endl ;
+ else
+ std::cout << '\n' << -1 << std::endl ;
+ return 0 ;
+}