WA了,求查错
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=3e5+5;
int n,ans,a[N];
struct Segment_Tree{
struct Node{
int s,tag;
}tree[N<<2];
inline int ls(int u){return u<<1;}
inline int rs(int u){return u<<1|1;}
inline void push_up(int u){
tree[u].s=tree[ls(u)].s+tree[rs(u)].s;
}
inline void push_down(int u,int l,int r){
if(tree[u].tag==0)return;
tree[ls(u)].tag+=tree[u].tag;
tree[rs(u)].tag+=tree[u].tag;
tree[ls(u)].s+=l*tree[u].tag;
tree[rs(u)].s+=r*tree[u].tag;
tree[u].tag=0;
}
inline void update(int u,int l,int r,int L,int R){
if(l>=L&&r<=R){
tree[u].s+=r-l+1;
tree[u].tag++;return;
}
int mid=l+r>>1;
push_down(u,mid-l+1,r-mid);
if(mid>=L)update(ls(u),l,mid,L,R);
if(mid<R)update(rs(u),mid+1,r,L,R);
push_up(u);
}
inline int query(int u,int l,int r,int x){
if(l==r)return tree[u].s;
int mid=l+r>>1;
push_down(u,mid-l+1,r-mid);
if(mid>=x)return query(ls(u),l,mid,x);
return query(rs(u),mid+1,r,x);
}
}t;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]),a[i]++;
for(int i=1;i<=n;i++){
ans+=t.query(1,1,n,a[i]);
if(a[i]>1)t.update(1,1,n,1,a[i]-1);
}
cout<<ans<<endl;
for(int i=1;i<n;i++){
ans+=n-a[i]-(a[i]-1);
printf("%d\n",ans);
}
return 0;
}