各桁に関して、1が2個、0が1個必要。
class TheDevice {
public:
int minimumAdditional(vector <string> v)
{
const int M = v[0].size();
int o[M], z[M];
fill(o, o + M, 0);
fill(z, z + M, 0);
for (int i = 0; i < v.size(); ++i) {
for (int j = 0; j < v[i].size(); ++j) {
o[j] += (v[i][j] == '1');
z[j] += (v[i][j] == '0');
}
}
int ret = 0;
while (true) {
string s;
for (int i = 0; i < M; ++i) {
if (o[i] < 2) {
s += '1';
++o[i];
continue;
}
if (z[i] < 1) {
s += '1';
++z[i];
continue;
}
s += '@';
}
cout << s << endl;
if (count(s.begin(), s.end(), '@') == s.size()) break;
++ret;
}
return ret;
}
};