1の#include <stdio.hの> 2 の#define MAXN 1002年 3 INT H [MAXN]、N、M、R [MAXN]。 4 空隙 inserth(INT データ)。 5 空の読み取り(); 6 ボイドprintr(); 7 INT メイン(){ 8 リード()。 9 printr()。 10 リターン 0 ; 11 } 12 13 空隙 inserth(int型データ){ 14 H [ 0 ] ++ ; 15 H [H [ 0 ] =データ; 16 であれば(H [ 0 ] == 1)のリターン; 17 // 根结点 18 他に { // 非根结点 19 int型I; 20 のために(iはH [= 0 ]; I> 1 ; iがI / = 2 ){ 21 であれば(データ<H [I / 2 ])H [I] = H [I / 2 ]と、 22 他に ブレーク。 23 } 24 H [I] = データ。 25 } 26 } 27 ボイドリード(){ 28 H [ 0 ] = 0 ; 29 のscanf(" %D%D "、&N、&M)。 30 int型I、データ; 31 のためには、(iは= 1 ; I <= N; I ++ ){ 32 のscanf(" %d個"、&データ)。 33 inserth(データ)。 34 } 35 リターン。 36 } 37 空隙printr(){ 38 int型I、データ、J。 39 のための(私は=0 ; I <M、I ++ ){ 40 のscanf(" %dの"、およびR [I])。 41 } 42 のためには、(iは= 0 ; I <M、I ++ ){ 43 であれば(R [i]が<= H [ 0 ]){ 44件の データ= R [i]は、 45 のために(J =データ; J> = 1 ; J = J / 2 ){ 46 のprintf(" %d個" 、H [J])。 47 もし(!J = 1)のprintf(" " ); 48 } 49 のprintf(" \ n個" ); 50 } 51 } 52 }
要約:完成する過程で、に調整小さなヒープルートインサート値、後に問題があります。