1 条题解
-
0
60分代码:
#include <bits/stdc++.h> using namespace std; int a[100005]; int main() { int n;scanf("%d", &n); for(int i=1;i<=n;i++)scanf("%d", &a[i]); int ans=0; for(int i=2;i<=n;i++) { for(int j=i-1;j>=1;j--) { if(a[j]>a[j+1]) { ans++; swap(a[j], a[j+1]); } else break; } } printf("%d\n", ans); return 0; }100分代码:
#include <bits/stdc++.h> using namespace std; typedef long long ll; int a[110005], tmp[110005]; ll ans; void msort(int l, int r) { if(l >= r)return ; int mid=(l + r)/2; msort(l, mid);msort(mid+1, r); int len = l; int i = l, j = mid + 1; while(i <= mid && j <= r) { if(a[i] > a[j]) { ans += mid - i + 1; tmp[len++] = a[j++]; } else tmp[len++] = a[i++]; } while(i <= mid)tmp[len++] = a[i++]; while(j <= r)tmp[len++] = a[j++]; memcpy(a + l, tmp + l, (r - l + 1)*4); } int main() { int n;scanf("%d", &n); for(int i=1;i<=n;i++)scanf("%d", &a[i]); ans=0;msort(1, n); printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 287
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 68
- 已通过
- 38
- 上传者