double test0() {
    string t0[] = {"101",
                   "010",
                   "101"
                  };
    vector <string> p0(t0, t0+sizeof(t0)/sizeof(string));
    XorBoardDivTwo * obj = new XorBoardDivTwo();
    clock_t start = clock();
    int my_answer = obj->theMax(p0);
    clock_t end = clock();
    delete obj;
    cout <<"Time: " <<(double)(end-start)/CLOCKS_PER_SEC <<" seconds" <<endl;
    int p1 = 9;
    cout <<"Desired answer: " <<endl;
    cout <<"\t" << p1 <<endl;
    cout <<"Your answer: " <<endl;
    cout <<"\t" << my_answer <<endl;
    if (p1 != my_answer) {
        cout <<"DOESN'T MATCH!!!!" <<endl <<endl;
        return -1;
    }
    else {
        cout <<"Match :-)" <<endl <<endl;
        return (double)(end-start)/CLOCKS_PER_SEC;
    }
}
int main() {
    XorBoardDivTwo test;
    XorBoardDivTwoOptimized test2;

    cout << test.theMax({"101", "010", "101"}) << endl;
    cout << test.theMax({"000000000000000000000000",
            "011111100111111001111110",
            "010000000100000001000000",
            "010000000100000001000000",
            "010000000100000001000000",
            "011111100111111001111110",
            "000000100000001000000010",
            "000000100000001000000010",
            "000000100000001000000010",
            "011111100111111001111110",
            "000000000000000000000000"}) << endl;


    cout << test2.theMax({"101", "010", "101"}) << endl;
    cout << test2.theMax({"000000000000000000000000",
            "011111100111111001111110",
            "010000000100000001000000",
            "010000000100000001000000",
            "010000000100000001000000",
            "011111100111111001111110",
            "000000100000001000000010",
            "000000100000001000000010",
            "000000100000001000000010",
            "011111100111111001111110",
            "000000000000000000000000"}) << endl;

    return 0;
}