diff --git a/Day 3/Marcus/cpp/part1.cpp b/Day 3/Marcus/cpp/part1.cpp new file mode 100644 index 0000000..5f4313d --- /dev/null +++ b/Day 3/Marcus/cpp/part1.cpp @@ -0,0 +1,20 @@ +#include + +using namespace std; + +int main() +{ + string in; + + int counts[12] = {0}; + + int result = 0; + + while(cin >> in) for(int i = 0; i < 12; i++) counts[i] = (in[i]=='1')?(counts[i]+1):(counts[i]-1); + + for(int i = 0; i < 12; i++) result |= ((counts[i]>0)?1:0)<<(11-i); + + cout << result*(result^0x0FFF) << endl; + + return 0; +} \ No newline at end of file diff --git a/Day 3/Marcus/cpp/part2.cpp b/Day 3/Marcus/cpp/part2.cpp new file mode 100644 index 0000000..8321a21 --- /dev/null +++ b/Day 3/Marcus/cpp/part2.cpp @@ -0,0 +1,57 @@ +#include +#include +#include + +using namespace std; + +int main() +{ + vector m_in, l_in; + string in_str; + + while(cin >> in_str) m_in.push_back(in_str); + + l_in = vector(m_in); + + int m_c, l_c; + + for(int i = 0; i < m_in[0].size() && m_in.size() > 1; i++) + { + m_c = 0; + for(int j = 0; j < m_in.size(); j++) + { + m_c += (m_in[j][i] == '1')?1:-1; + } + + for(int j = 0; j < m_in.size() && m_in.size() > 1; j++) + { + if (((m_c>=0)?'0':'1')==m_in[j][i]) + { + m_in.erase(m_in.begin()+j); + j--; + } + } + } + + for(int i = 0; i < l_in[0].size() && l_in.size() > 1; i++) + { + l_c = 0; + for(int j = 0; j < l_in.size(); j++) + { + l_c += (l_in[j][i] == '1')?1:-1; + } + + for(int j = 0; j < l_in.size() && l_in.size() > 1; j++) + { + if (((l_c>=0)?'1':'0')==l_in[j][i]) + { + l_in.erase(l_in.begin()+j); + j--; + } + } + } + + cout << stoi(m_in[0],nullptr,2)*stoi(l_in[0],nullptr,2) << endl; + + return 0; +}