1
0
Fork 0
Advent2021/Day 3/Marcus/cpp/part2.cpp

58 lines
1.3 KiB
C++

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> m_in, l_in;
string in_str;
while(cin >> in_str) m_in.push_back(in_str);
l_in = vector<string>(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;
}