void subset(UMAP &transaction, const vector<PAIR> &pkhui_vec, VUMAP &hui, UTIL &min_u, const size_t &topk)
{
TOPKLIST huilist;
for(vector<PAIR>::const_iterator pit = pkhui_vec.begin(); pit != pkhui_vec.end(); ++pit)
{
if(pit->second < min_u)
break;
UTIL util = 0;
for(vector<ID>::const_iterator it = pit->first.begin(); it != pit->first.end(); ++it)
{
if(transaction.find(*it) != transaction.end())
util += transaction[*it];
else
{
util = 0;
break;
}
}
if( util !=0)
hui[pit->first] += util;
if(hui[pit->first] >= min_u) // profiler顯示這行佔的比例最大
{
huilist.push(hui[pit->first]);
raise_border_min_util(min_u, topk, huilist);
}
}
}
dm9pZCBzdWJzZXQoVU1BUCAmdHJhbnNhY3Rpb24sIGNvbnN0IHZlY3RvcjxQQUlSPiAmcGtodWlfdmVjLCBWVU1BUCAmaHVpLCBVVElMICZtaW5fdSwgY29uc3Qgc2l6ZV90ICZ0b3BrKQp7CiAgICBUT1BLTElTVCBodWlsaXN0OwoJZm9yKHZlY3RvcjxQQUlSPjo6Y29uc3RfaXRlcmF0b3IgcGl0ID0gcGtodWlfdmVjLmJlZ2luKCk7IHBpdCAhPSBwa2h1aV92ZWMuZW5kKCk7ICsrcGl0KQoJewoJCWlmKHBpdC0+c2Vjb25kIDwgbWluX3UpCgkJCWJyZWFrOwoJCVVUSUwgdXRpbCA9IDA7CgkJZm9yKHZlY3RvcjxJRD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGl0LT5maXJzdC5iZWdpbigpOyBpdCAhPSBwaXQtPmZpcnN0LmVuZCgpOyArK2l0KQoJCXsKCQkJaWYodHJhbnNhY3Rpb24uZmluZCgqaXQpICE9IHRyYW5zYWN0aW9uLmVuZCgpKQoJCQkJdXRpbCArPSB0cmFuc2FjdGlvblsqaXRdOwoJCQllbHNlCgkJCXsKCQkJCXV0aWwgPSAwOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJaWYoIHV0aWwgIT0wKQoJCQlodWlbcGl0LT5maXJzdF0gKz0gdXRpbDsKCQlpZihodWlbcGl0LT5maXJzdF0gPj0gbWluX3UpIC8vIHByb2ZpbGVy6aGv56S66YCZ6KGM5L2U55qE5q+U5L6L5pyA5aSnCgkJewoJCQlodWlsaXN0LnB1c2goaHVpW3BpdC0+Zmlyc3RdKTsKCQkJcmFpc2VfYm9yZGVyX21pbl91dGlsKG1pbl91LCB0b3BrLCBodWlsaXN0KTsKCQl9Cgl9Cn0=