大测试点#3WA#4TLE
查看原帖
大测试点#3WA#4TLE
988515
YSchencheche楼主2023/11/9 15:33
#include<bits/stdc++.h>
using namespace std;
int a[30001],x,n,l,s,c;
void P(int x)
{
	int A,S;
	a[++l]=x;
	S=l;
	while(S>1)
	{
		A=S/2;
		if(a[S]>=a[A])
		{
			break;
		}		
		swap(a[S],a[A]);
		S=A;
	}
}
int G()
{
	int A=1,S,R=a[1];
	a[1]=a[l--];
	while(A*2<=l)
	{
		S=A*2;
		if(S<l && a[S+1]<a[S])
		{
			S++;
		}
		if(a[S]>=a[A])
		{
			break;
		}
		swap(a[S],a[A]);
		A=S;
	}
	return R;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x;
		P(x);
	}
	for(int i=1;i<n;i++)
	{
		s=G()+G();
		c+=s;
		P(s);
	}
	cout<<c;
	return 0;
}

求助QAQ

2023/11/9 15:33
加载中...