#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[50005],b[50005]; ll ans; ll n; void gui(ll L,ll min,ll r) { ll i=L,j=min; ll k=L; while(i<min&&j<r) { if(a[i]<a[j]) b[k++]=a[i++]; else { ans=ans+min-i; b[k++]=a[j++]; } } while(i<min) { b[k++]=a[i++]; } while(j<r) { b[k++]=a[j++]; } for(int i=L;i<r;i++) a[i]=b[i]; } void f(ll L,ll r) { if(L+1<r) { ll min=(L+r)/2; f(L,min); f(min,r); gui(L,min,r); } } int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; f(0,n); cout<<ans<<endl; return 0; }
解题思路:
注意事项:
参考代码:
0.0分
2 人评分
C二级辅导-求偶数和 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:695 |
弟弟的作业 (C++代码)浏览:1342 |
不会做的浏览:954 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:782 |
WU-蓝桥杯算法提高VIP-Quadratic Equation (C++代码)浏览:1808 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:836 |
校门外的树 (C语言代码)浏览:733 |
K-进制数 (C语言描述,蓝桥杯)浏览:955 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:566 |