classEventManager:def__init__(self,events:list[list[int]]):self.sl=SortedList()self.d={}foreventId,priorityinevents:self.sl.add((-priority,eventId))self.d[eventId]=prioritydefupdatePriority(self,eventId:int,newPriority:int)->None:old_priority=self.d[eventId]self.sl.remove((-old_priority,eventId))self.sl.add((-newPriority,eventId))self.d[eventId]=newPrioritydefpollHighest(self)->int:ifnotself.sl:return-1eventId=self.sl.pop(0)[1]self.d.pop(eventId)returneventId# Your EventManager object will be instantiated and called as such:# obj = EventManager(events)# obj.updatePriority(eventId,newPriority)# param_2 = obj.pollHighest()
classEventManager{privateTreeSet<int[]>sl;privateMap<Integer,Integer>d;publicEventManager(int[][]events){sl=newTreeSet<>((a,b)->{if(a[0]!=b[0])returna[0]-b[0];returna[1]-b[1];});d=newHashMap<>();for(int[]e:events){inteventId=e[0],priority=e[1];sl.add(newint[]{-priority,eventId});d.put(eventId,priority);}}publicvoidupdatePriority(inteventId,intnewPriority){intold=d.get(eventId);sl.remove(newint[]{-old,eventId});sl.add(newint[]{-newPriority,eventId});d.put(eventId,newPriority);}publicintpollHighest(){if(sl.isEmpty()){return-1;}int[]top=sl.pollFirst();inteventId=top[1];d.remove(eventId);returneventId;}}/** * Your EventManager object will be instantiated and called as such: * EventManager obj = new EventManager(events); * obj.updatePriority(eventId,newPriority); * int param_2 = obj.pollHighest(); */
classEventManager{public:set<pair<int,int>>sl;unordered_map<int,int>d;EventManager(vector<vector<int>>&events){for(auto&e:events){inteventId=e[0],priority=e[1];sl.insert({-priority,eventId});d[eventId]=priority;}}voidupdatePriority(inteventId,intnewPriority){intold=d[eventId];sl.erase({-old,eventId});sl.insert({-newPriority,eventId});d[eventId]=newPriority;}intpollHighest(){if(sl.empty()){return-1;}autoit=sl.begin();inteventId=it->second;sl.erase(it);d.erase(eventId);returneventId;}};/** * Your EventManager object will be instantiated and called as such: * EventManager* obj = new EventManager(events); * obj->updatePriority(eventId,newPriority); * int param_2 = obj->pollHighest(); */
import(rbt"github.com/emirpasic/gods/v2/trees/redblacktree""cmp")typepairstruct{p,idint}typeEventManagerstruct{sl*rbt.Tree[pair,struct{}]dmap[int]int}funcConstructor(events[][]int)EventManager{sl:=rbt.NewWith[pair,struct{}](func(a,bpair)int{returncmp.Or(a.p-b.p,a.id-b.id)})d:=make(map[int]int)for_,e:=rangeevents{eventId,priority:=e[0],e[1]sl.Put(pair{-priority,eventId},struct{}{})d[eventId]=priority}returnEventManager{sl:sl,d:d}}func(this*EventManager)UpdatePriority(eventIdint,newPriorityint){old:=this.d[eventId]this.sl.Remove(pair{-old,eventId})this.sl.Put(pair{-newPriority,eventId},struct{}{})this.d[eventId]=newPriority}func(this*EventManager)PollHighest()int{ifthis.sl.Size()==0{return-1}it:=this.sl.Iterator()it.First()top:=it.Key()eventId:=top.idthis.sl.Remove(top)delete(this.d,eventId)returneventId}/** * Your EventManager object will be instantiated and called as such: * obj := Constructor(events); * obj.UpdatePriority(eventId,newPriority); * param_2 := obj.PollHighest(); */