本文主要是介绍【02杰哥和序列】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
02杰哥和序列
- 题目
- 解法
- C++
题目
解法
C++
#include<stdio.h> long long sum = 0;void merge(int a[], int i, int mid, int j) {int all[j-i+1];int s = 0;int lo, hi;lo = i;hi = mid + 1;while (lo <= mid && hi <= j) {if (a[lo] <= a[hi]) {all[s++] = a[lo++];} else {sum+=mid-lo+1;all[s++] = a[hi++];}}for (int k = lo; k <= mid; k++) {all[s++] = a[k];}for (int k = hi; k <= j; k++) {all[s++] = a[k];}s = 0;for (int k = i; k <= j; k++) {a[k] = all[s++];}
} void MergeSort(int a[], int i, int j) {if (i >= j)return;int mid = (j - i) / 2 + i;MergeSort(a, i, mid);MergeSort(a, mid + 1, j);merge(a, i, mid, j);}int main(){ int n,a,b;scanf("%d %d %d",&n,&a,&b);int d[n];for(int i=0;i<n;i++) {scanf("%d",&d[i]);}MergeSort(d,0,n-1);long long result;if(a < b){result = sum*a;} else {result = sum*b;}printf("%lld\n",result);return 0;
}
这篇关于【02杰哥和序列】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!