タイトルます。https://www.cometoj.com/problem/1046
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 typedefの長い 長いLL。 構造体ノード{ int型のID、daoda、xiaohao、ヴァル。 ブール 演算子 <(constのノード&B)のconst { 場合(ヴァル== b.val) 戻り daoda> b.daoda。 戻るヴァル< b.valを。 } }。 構造体NODE { int型のID、TI。 }。 ベクトル <NODE> ANS; PRIORITY_QUEUE <ノード> QUE。 int型メイン(){ ノードp。 int型 lasttime = 0 ; 一方、(〜のscanf(" %D%D%D%D "、&p.id、&p.daoda、&p.xiaohao、&p.val)){ 場合(que.empty()){ lasttime = p.daoda。 que.push(P)。 続け; } // coutの<< "!!!!" <<てendl; int型スムティ= p.daoda- lasttime。 int型クルティ= lasttime。 ノードuの。 ノードq; 一方、(!que.empty()&&スムティ> = que.top()。xiaohao){ U =que.top(); que.pop(); スムティ - = u.xiaohao。 クルティ + = u.xiaohao。 q.id = u.id。 q.ti = クルティ。 ans.push_back(Q)。 } もし(!que.empty()&&スムティ= 0 ){ U = que.top()。 que.pop(); u.xiaohao = MAX(0、u.xiaohao- スムティ)。 クルティ + = u.xiaohao。 もし(u.xiaohao> 0 ) que.push(U)。 他{ q.id = u.id。 q.ti = クルティ。 ans.push_back(Q)。 } } que.push(P)。 lasttime = p.daoda。 } ながら(!que.empty()){ // COUT << "!!" << ENDL。 ノードU = que.top()。 que.pop(); ノードq; q.id = u.id。 q.ti = lasttime + u.xiaohao。 ans.push_back(Q)。 lasttime + = u.xiaohao。 } ための(int型 I = 0を私は++;)私は(ans.sizeを< {) のprintf(" %D%D \ n " 、ANS [I] .ID、ANS [I] .ti)。 } 戻り 0 。 }