有奖悬赏Aaaa
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define ldb long double
template<typename T>
inline void read(T &x){
bool f=1; x=0; char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') f=!f; ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch-'0'); ch=getchar();}
x=(f?x:-x); return ;
}
template<typename T>
inline void print(T x){
if(x<0) {putchar('-'); x=-x;}
if(x>9) print(x/10);
putchar(x%10+'0'); return ;
}
const int N=100010,M=400010;
int n,len,ans,a[N],aa[N],numl[M],numr[M],lhs[N],rhs[N];
map<int,int>lev;
void updatel(int k,int l,int r,int p){
if(p<l||p>r) return ;
if(l==r) {numl[k]++; return ;}
int mid=(l+r)>>1;
updatel(k<<1,l,mid,p); updatel((k<<1)|1,mid+1,r,p);
numl[k]=numl[k<<1]+numl[(k<<1)|1];
return ;
}
void updater(int k,int l,int r,int p){
if(p<l||p>r) return ;
if(l==r) {numr[k]++; return ;}
int mid=(l+r)>>1;
updater(k<<1,l,mid,p); updater((k<<1)|1,mid+1,r,p);
numr[k]=numr[k<<1]+numr[(k<<1)|1];
return ;
}
int queryl(int k,int l,int r,int lhs,int rhs){
if(l>rhs||r<lhs||lhs>rhs) return 0;
if(l==r) return numl[k];
int mid=(l+r)>>1,ans=0;
ans=ans+queryl(k<<1,l,mid,lhs,rhs);
ans=ans+queryl((k<<1)|1,mid+1,r,lhs,rhs);
return ans;
}
int queryr(int k,int l,int r,int lhs,int rhs){
if(l>rhs||r<lhs||lhs>rhs) return 0;
if(l==r) return numr[k];
int mid=(l+r)>>1,ans=0;
ans=ans+queryr(k<<1,l,mid,lhs,rhs);
ans=ans+queryr((k<<1)|1,mid+1,r,lhs,rhs);
return ans;
}
signed main(){
read(n);
for(int i=1;i<=n;i++) {read(a[i]); aa[i]=a[i];}
sort(aa+1,aa+n+1); len=unique(aa+1,aa+n+1)-aa;
for(int i=1;i<len;i++) lev[aa[i]]=i;
for(int i=1;i<=n;i++){
lhs[i]=queryl(1,1,len-1,lev[a[i]]+1,len-1);
updatel(1,1,len-1,lev[a[i]]);
}
for(int i=n;i>=1;i--){
rhs[i]=queryr(1,1,len-1,lev[a[i]]+1,len-1);
updater(1,1,len-1,lev[a[i]]);
}
for(int i=1;i<=n;i++) if(lhs[i]>rhs[i]*2||rhs[i]>lhs[i]*2) ans++;
printf("%lld\n",ans);
return 0;
}