#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语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:494 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:589 |
震宇大神的杀毒软件 (C语言代码)浏览:1240 |
简单的a+b (C语言代码)浏览:537 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:645 |
分糖果 (C++代码)浏览:1438 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:875 |
C二级辅导-阶乘数列 (C语言代码)浏览:688 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:818 |
printf基础练习2 (C语言代码)浏览:617 |