不是VIP会员,不能显示答案

题目解答

题目:
# 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) 列各组输入获得的答案最大的是( )。
考点:
分析:
解答:
评论:
老师: