0昏!!!TAT
查看原帖
0昏!!!TAT
799098
chengzihan620楼主2023/8/21 11:48
#include<bits/stdc++.h>
using namespace std;
int heap[100001],hsize,sum;
void put(int n){
	heap[++hsize]=n;
	int i=hsize;
	int j=i/2;
	while(i>1){
		if(heap[j]<=heap[i]) 	break;
		if(heap[j]>heap[i])	swap(heap[j],heap[i]);
		i=j;
		j=i/2;
	}
}
int get(){
	int n=heap[1];
	swap(heap[1],heap[hsize--]);
	int j=1,i=j*2;
	while(j<hsize/2){
		if(heap[i+1]<heap[i])	i++;
		if(heap[j]<=heap[i])	break;
		swap(heap[j],heap[i]);
		j=i;
		i=j*2;
	}
	return n;
}
int main(){
	int n,tmp;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>tmp;
		put(tmp);
	}
	while(hsize>1){
		int x=get();
		int y=get();
		sum+=(x+y);
		put(x+y);
	}
	cout<<sum;
    return 0;
}
2023/8/21 11:48
加载中...