Cod sursa(job #1340981)

Utilizator PaueyPaula Nicoleta Gradu Pauey Data 12 februarie 2015 11:23:27
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#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