记录编号 438664 评测结果 AAAAAAAAAA
题目名称 排序工作量-加强版 最终得分 100
用户昵称 Gravatar实力演员阵容 是否通过 通过
代码语言 C++ 运行时间 0.111 s
提交时间 2017-08-16 21:53:34 内存使用 0.70 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<time.h>
  4. #include<cstdlib>
  5. using namespace std;
  6. int a[50010]={0},b[50010]={0};
  7. int sum=0;
  8. void merge_sort(int x,int mid,int y){
  9. int l=x,i=x,r=mid+1;
  10. for(;i<=mid&&r<=y;){
  11. if(a[i]>a[r]){
  12. b[l++]=a[i++];
  13. sum+=y-r+1;
  14. }
  15. else
  16. b[l++]=a[r++];
  17. }
  18. for(;i<=mid;)
  19. b[l++]=a[i++];
  20. for(;r<=y;)
  21. b[l++]=a[r++];
  22. for(int k=x;k<=y;k++)
  23. a[k]=b[k];
  24. }
  25. void merge(int x,int y){
  26. int mid=(x+y)/2;
  27. if(x!=y){
  28. merge(x,mid);
  29. merge(mid+1,y);
  30. }
  31. merge_sort(x,mid,y);
  32. }
  33. int main(){
  34. freopen("px.in","r",stdin);
  35. freopen("px.out","w",stdout);
  36. int n;
  37. cin>>n;
  38. for(int i=0;i<n;i++){
  39. scanf("%d",&a[i]);
  40. }
  41. merge(0,n-1);
  42. cout<<sum;
  43. return 0;
  44. }
  45. /*
  46. int main(){
  47. freopen("px.in","w",stdout);
  48. srand((int)time(NULL));
  49. cout<<50000<<endl;
  50. for(int i=0;i<50000;i++){
  51. cout<<rand()%1000000<<" ";
  52. }
  53. }
  54. */