提交时间:2025-02-07 15:23:58
运行 ID: 36086
#include<bits/stdc++.h> using namespace std; int n,a[1145],prefix[1145],ans=0,len,r,t,pos=2; bool cmp(int x,int y){ return x>y; } int main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n,r=len=__lg(n)+!!(__builtin_popcount(n)-1),t=len+1; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1,cmp),ans+=a[1]*len; for(int i=1;i<=n+15;i++)prefix[i]=prefix[i-1]+a[i]; while(pos<=n+1&&r>0)ans+=(prefix[min(pos+r-1,n+10)]-prefix[pos-1])*t,t++,pos+=r,r--; cout<<ans; return 0; }