手写priority_queue
2024-11-10 18:07:30
发布于:广东
15阅读
0回复
0点赞
(远古代码,真正的pq不是这样的
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[100005];
int n;
int l = 1, r = 1;
void push(int x){//插入
int i = r++;
while(i > l){
if(a[i] > x){
swap(a[i], a[i + 1]);
i--;
}else break;
}a[++i] = x;
}void pop(){
l++;
}int size(){
return r - l + 1;
}int back(){
return a[l];
}
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}r = n;
sort(a + 1, a + r + 1);
int ct = 0;
while(size() != 1){
int _1 = back();
pop();
int _2 = back();
pop();
ct += _1 + _2;
push(_1 + _2);
}cout << ct;
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个