# include <iostream>
using namespace std;
const int maxn=100005;
int n;
int a[maxn];
int b[maxn];
void solve(int l, int r)
{
if (l==r) return ;
int mid=(l+r)/2;
solve(l, mid); solve(mid+1,r);
int i=1,j=mid+1,k=1;
while(i<=mid &&j<=r)
{
if (a[i]<=a[j]) b[k++]=a[i++];
else b[k++]=a[j++];
}
while(i<=mid) b[k++]=a[i++];
while(j<=r) b[k++]=a[j++];
for (int i=l; i<=r; i++) a[i]=b[i];
}
int main(){
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i];
solve(1,n);
int ans=0;
for (int i=1; i<=n; i++) ans=ans+a[i]*i;
cout<<ans<<endl;
return 0;
}
判断题
1) 即使a中有重复的数字,该程序仍能正常运行并输出正确答案。( )
2) 当运行完25行后,a数组单调不增。( )
选择题
3) 当输入如下时,n 1 2 3.....n 输出答案为( )。
4) 该程序最坏情况下的时间复杂度为( )。
5) 当输入如下时,5 50 60 30 40 50,输出为( )。
6) 列各组输入获得的答案最大的是( )。