题目描述
blablabla
样例#include[HTML_REMOVED]
using namespace std;
int a[10000050];
int c=0;
void add(int x)
{
c;
a[c]=x;
int now=c;//指针,指向当前
int nxt=now/2;//父亲节点
while(nxt>0&&a[nxt]>a[now])
{
swap(a[nxt],a[now]);
now=nxt;nxt=now/2;//now此时已变,无法用c代替
}
}
int del()
{
int r=a[1];
a[1]=a[c];
c–;int now=1,nxt=2;//nxt是now的左孩子
if(a[nxt]>a[nxt+1]&&nxt+1<=c)nxt;
while(a[nxt][HTML_REMOVED]a[nxt+1]&&nxt+1<=c)nxt++;
}
return r;
}
int main()
{
int f[10000050];
int x,m;
int ans=0;
cin>>m;
for(int i=1;i<=m;i)
{
cin>>x;
add(x);
}
for(int i=1;i<=m;i)
{
f[i]=del();
}
for(int i=1;i<=m-1;i)
{
ans+=(f[i]+f[i+1]);
f[i+1]+=f[i];
for(int k=i+1;k<=m-1;k)
{
if(f[k]>f[k+1])swap(f[k],f[k+1]);
else continue;
}
}
cout<<ans;
return 0;
}
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla