C++蒟蒻手写堆RE求助
查看原帖
C++蒟蒻手写堆RE求助
169606
Jason12楼主2022/3/23 11:36
#include <bits/stdc++.h>
  using namespace std;
int n,a[100005],b[100005],c[100005],l,i,j;
void put(int t)
{
	int u,v;
	c[++l]=t;
	u=l;
	while (u>1)
	{
		v=u>>1;
		if (c[u]<c[v]) swap(c[u],c[v]);
		else return;
		u=v;
	}
	return;
}
void del()
{
	int u=1,v;
	swap(c[1],c[l--]);
	while ((u<<1)<=l)
	{
		v=u<<1;
		if (v+1<=l && c[v+1]<c[v]) v++;
		if (c[u]>c[v]) swap(c[u],c[v]);
		else return;
		u=v;
	}
	return;
}
int main()
{
	std::ios::sync_with_stdio(0);
	cin.tie(); cout.tie();
	cin>>n;
	for (i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for (i=1;i<=n;i++)
	{
		cin>>b[i];
	}
	for (i=1;i<=n;i++)
	{
		for (j=1;i*j<=n&&j<=n;j++)
		{
			put(a[i]+b[j]);
		}
	}
	for (i=1;i<=n;i++)
	{
		cout<<c[1]<<" ";
		del();
	}
	return 0;
}
2022/3/23 11:36
加载中...