NC15163. 逆序数
描述
输入描述
第一行有一个整数n(1 <= n <= 100000), 然后第二行跟着n个整数,对于第i个数a[i],(0 <= a[i] <= 100000)。
输出描述
输出这个序列中的逆序数
示例1
输入:
5 4 5 1 3 2
输出:
7
C++ 解法, 执行用时: 652ms, 内存消耗: 4848K, 提交时间: 2021-07-11 10:47:24
#include<stdio.h> int main() {int s[1000000]={0},n,i,j,a; long long sum=0; scanf("%d",&n); while(n--){scanf("%d",&a); sum+=s[a]; for(i=0;i<a;i++) s[i]++;} printf("%lld",sum);}
Python3 解法, 执行用时: 141ms, 内存消耗: 16764K, 提交时间: 2023-03-09 11:08:03
import bisect n=int(input()) ls=list(map(int,input().split())) q = [] res = 0 for v in ls: i = bisect.bisect_left(q, -v) res += i q[i:i] = [-v] print(res)
pypy3 解法, 执行用时: 131ms, 内存消耗: 34464K, 提交时间: 2022-04-03 12:27:32
import bisect n=input() t,ans = [],0 for _ in list(map(int,input().split())): i = bisect.bisect_left(t, -_) ans += i t[i:i] = [-_] print(ans)