题目
答案
#include<iostream>
using namespace std;
int size=0;
int a[1001];
void insert(int tmp)
{
int i;
for(i=++size;tmp<a[i/2];i/=2)
a[i]=a[i/2];
a[i]=tmp;
}
int main()
{
a[0]=-10001;
int n,m,tmp;
cin>>n>>m;
int i;
for(i=0;i<n;i++)
{
cin>>tmp;
insert(tmp);
}
for(i=0;i<m;i++)
{
cin>>tmp;
cout<<a[tmp];
while(tmp>1)
{
tmp/=2;
cout<<" "<<a[tmp];
}
cout<<endl;
}
}
注意
要先了解了顶堆的知识后,再结合实例理解相关代码