2 {
3 p r i o r i t y q u e u e <HeapNode , vector <HeapNode>, cmp>
maxim um heap ;
4
5 i n t ∗ r e s t w e ig h t= new i n t [ n +1];
6
7 i n t sum weight = 0 ;
8 f o r ( i n t i = 1 ; i <=n ; i ++)
9 sum weight+=weight [ i ] ;
10
11 r e s t w e i g h t [ 0 ] = sum weight ;
12 f o r ( i n t i = 1 ; i <= n ; i ++)
13 r e s t w e i g h t [ i ] = r e st w e i g h t [ i −1] − we ight [ i ] ;
14
15 i n t i = 1 ;
16 wh il e ( i != n+1)
17 {
18 i f ( c ur r e n t w e i g ht+weight [ i ] <= w e i g h t l im i t )
19 {//†f(:
20 AddLiveNode ( maximum heap , n , c ur re n t w ei g ht+
we ight [ i ]+ r es t w e i g h t [ i ] , i +1, tra ck , 1 ) ;
21 }
22 /∗mf(:∗/
23 AddLiveNode ( maximum heap , n , c u r r en t w ei g ht+
r e s t w e i g h t [ i ] , i +1, tra c k , 0 ) ;
24
25 HeapNode node ;
26 node . l e v e l = maxim um heap . top ( ) . l e v e l ;
27 node . p r i o r i t y = maximum heap . top ( ) . p r i o r i t y ;
28
29 i = node . l e v e l ;
30 cu rr e nt we ig h t = node . p r i o r i t y − r e s t w e i g h t [ i
−1];
31 f o r ( i n t j = 1 ; j <= n ; j ++)
32 t r a ck [ j ] = maximum heap . top ( ) . t r ack [ j ] ;
33
34 maximum heap . pop ( ) ;
35 }
36 d e l e t e [ ] r e s t w ei g ht ;
37
38 }
•[“è„N‡5loading problem.cpp6"
3