Pagini recente » Cod sursa (job #105841) | Cod sursa (job #586370) | Borderou de evaluare (job #1592193) | Profil ReySkywalker | Cod sursa (job #1340981)
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string s;
void afis(vector<string> v) {
for(int i = 0; i < v.size(); ++i)
cout << v[i] << '\n';
}
int solve(vector<string> v, vector<string> v0, vector<string> v1, int pas, int ans) {
if(v.empty())
return 0;
if(v.size() == 1)
return v[0].size();
for(int i = 0; i < v.size(); ++i) {
if(v[i].size() > pas) {
if(v[i][pas] == '0') {
v0.push_back(v[i]);
}
if(v[i][pas] == '1') {
v1.push_back(v[i]);
}
}
}
int ans1 = 0, ans2 = 0;
vector<string> v0c, v1c;
ans1 = solve(v0, v0c, v1c, pas + 1, (pas + 1) * v0.size());
ans2 = solve(v1, v0c, v1c, pas + 1, (pas + 1) * v1.size());
return max(ans, max(ans1, ans2));
}
int main()
{
ifstream cin("test.in");
int T, N;
cin >> T;
for(int t = 1; t <= T; ++t) {
cin >> N;
vector<string> v, v0, v1;
for(int i = 1; i <= N; ++i) {
cin >> s;
v.push_back(s);
}
cout << solve(v, v0, v1, 0, 0) << '\n';
}
return 0;
}
//trie