維護一個集合,支持三種操作:插入元素、刪除最大元素、刪除最小元素。需輸出被刪除元素的關聯值。
C++ STL `map` 以鍵值自動排序(默認按 key 升序)。將輸入的數值作為 key,關聯值作為 value 存入 map。插入 O(log n),刪除最大/最小分別操作 `end()` 和 `begin()` 迭代器,同樣 O(log n)。
if (op == 1) { map[key] = val; ++sz; }
else if (op == 2) { // 刪除最大
if (sz == 0) puts("0");
else { auto it = prev(map.end()); printf("%d\n", it->second); map.erase(it); --sz; }
}
else if (op == 3) { // 刪除最小
if (sz == 0) puts("0");
else { auto it = map.begin(); printf("%d\n", it->second); map.erase(it); --sz; }
}
適合數據量中等、操作單純的雙端優先隊列問題,快速編寫、不易出錯。