各桁に関して、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; } };