Beispiel #1
0
int
test() {
    printf("Testing BenderRMQ implementation\n");
    printf("--------------------------------\n");

    LookupTables lt;
    lt.initialize(4);
    // lt.show_tables();
    // return 0;

    vui_t v;
    v.push_back(45);
    v.push_back(4);
    v.push_back(5);
    v.push_back(2);
    v.push_back(99);
    v.push_back(41);
    v.push_back(45);
    v.push_back(47);
    v.push_back(51);
    v.push_back(89);
    v.push_back(1);
    v.push_back(3);
    v.push_back(5);
    v.push_back(98);
    v.push_back(289);
    v.push_back(14);
    v.push_back(95);
    v.push_back(88);

    BenderRMQ brmq;
    brmq.initialize(v);

    for (size_t i = 0; i < v.size(); ++i) {
        for (size_t j = i; j < v.size(); ++j) {
            pui_t one = brmq.query_max(i, j);
            pui_t two = naive_query_max(v, i, j);
            printf("query_max(%u, %u) == (%u, %u)\n", (uint_t)i, (uint_t)j, one.first, two.first);
            assert_eq(one.first, two.first);
        }
    }

    printf("\n");
    return 0;
}
    int
    test() {
	printf("Testing SparseTable implementation\n");
	printf("----------------------------------\n");

        vui_t v;
        v.push_back(45);
        v.push_back(4);
        v.push_back(5);
        v.push_back(2);
        v.push_back(99);
        v.push_back(41);
        v.push_back(45);
        v.push_back(45);
        v.push_back(51);
        v.push_back(89);
        v.push_back(1);
        v.push_back(3);
        v.push_back(5);
        v.push_back(98);

        for (int i = 0; i < 10; ++i) {
            // printf("%d: %d\n", i, log2(i));
        }

        SparseTable st;
        st.initialize(v);

        for (size_t i = 0; i < v.size(); ++i) {
            for (size_t j = i; j < v.size(); ++j) {
                pui_t one = st.query_max(i, j);
                pui_t two = naive_query_max(v, i, j);
                printf("query_max(%u, %u) == (%u, %u)\n", (uint_t)i, (uint_t)j, one.first, two.first);
                assert_eq(one.first, two.first);
            }
        }

	printf("\n");
        return 0;
    }
Beispiel #3
0
    int
    test() {
        vui_t v;
        v.push_back(45);
        v.push_back(4);
        v.push_back(5);
        v.push_back(2);
        v.push_back(99);
        v.push_back(41);
        v.push_back(45);
        v.push_back(45);
        v.push_back(51);
        v.push_back(89);
        v.push_back(1);
        v.push_back(3);
        v.push_back(5);
        v.push_back(98);

        for (int i = 0; i < 10; ++i) {
            // printf("%d: %d\n", i, log2(i));
        }

        SegmentTree st;
        st.initialize(v);

        for (size_t i = 0; i < v.size(); ++i) {
            for (size_t j = i; j < v.size(); ++j) {
                pui_t one = st.query_max(i, j);
                pui_t two = naive_query_max(v, i, j);
                printf("query_max(%u, %u) == (%u, %u)\n", (uint_t)i, (uint_t)j, one.first, two.first);
                assert(one.first == two.first);
            }
        }

        return 0;
    }