int maxEnergy(vector <int> weight) { m.clear(); memset(x, 0, sizeof(x)); len = weight.size(); if (len < 3) { return 0; } if (len == 3) { return weight[0]*weight[2]; } int i; for (i = 0; i < len; ++i) { x[i] = weight[i]; } int all_mask = (1<<len)-1; int mid_mask = ((1<<(len-2))-1)*2; int end_mask = all_mask ^ mid_mask; m[end_mask] = 0; return rec(all_mask); }
void ListMapTest::testInsert() { const int N = 1000; typedef ListMap<int, int> IntMap; IntMap hm; assert (hm.empty()); for (int i = 0; i < N; ++i) { IntMap::Iterator res = hm.insert(IntMap::ValueType(i, i*2)); assert (res->first == i); assert (res->second == i*2); IntMap::Iterator it = hm.find(i); assert (it != hm.end()); assert (it->first == i); assert (it->second == i*2); assert (hm.size() == i + 1); } assert (!hm.empty()); for (int i = 0; i < N; ++i) { IntMap::Iterator it = hm.find(i); assert (it != hm.end()); assert (it->first == i); assert (it->second == i*2); } hm.clear(); for (int i = 0; i < N; ++i) { IntMap::Iterator res = hm.insert(IntMap::ValueType(i, 0)); assert (res->first == i); assert (res->second == 0); } }