提交时间:2022-07-20 13:23:34

运行 ID: 53013

#include<bits/stdc++.h> using namespace std; struct node{ int num; int rank; }a[10000000]; int n; int cnt,maxc=-1; int bin(int x) { int l=1,r=cnt; while(l<r) { int mid=(l+r)>>1; if(a[mid].num<x) l=mid+1; else r=mid; } return a[l].rank; } long long ans; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(x>maxc) { cnt++; a[cnt].num=x; a[cnt].rank=i; maxc=x; } else if(x<maxc) { int k=bin(x); ans+=(long long)1*(i-k); } } printf("%lld",ans); }