n 人攜帶價值 vᵢ 禮物到達,共開門 m 次,第 i 次在第 aᵢ 人到達時開門放入 bᵢ 人。規則:禮物價值高者優先,價值相同先到先進。所有人到達後再開一次門放入剩餘人。q 次詢問第 k 個進場者的名字。
struct Person {
int id, value;
char name[220];
bool operator<(const Person& o) const {
return value == o.value ? id > o.id : value < o.value; // 大頂堆
}
};
struct DoorEvent {
int trigger, count;
bool operator<(const DoorEvent& o) const { return trigger < o.trigger; }
};