溪水瑶 @ 2019-08-07 15:45:57
表示很蒙啊
#include<bits/stdc++.h>
using namespace std;
const int N=500010;
int n,a[N<<1],c[N<<1],ans;
int ask(int x)
{
int sum=0;
for(;x;x-=x&-x)sum+=c[x];
return sum;
}
void add(int x,int y){
for(;x<=N;x+=x&-x)c[x]+=y;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=n;i;i--)
{
ans+=ask(a[i]-1);
add(a[i],1);
}
cout<<ans<<endl;
}
by 溪水瑶 @ 2019-08-07 16:13:23
还是re的
by yu__xuan @ 2019-08-07 16:13:42
@溪水瑶 emmmm
by yu__xuan @ 2019-08-07 16:13:48
不知道
by 溪水瑶 @ 2019-08-07 16:14:48
@yu__xuan 别放弃孩子呀,说不定还能抢救的
by yu__xuan @ 2019-08-07 16:16:30
@溪水瑶 我也还是个孩子,qwq
by yu__xuan @ 2019-08-07 16:17:27
还是离散化一下吧,也不难写
by 溪水瑶 @ 2019-08-07 16:18:46
不会写呀
by la_un_ty @ 2019-08-07 16:30:53
@溪水瑶
在ask(a[i]-1)的时候炸了。因为a[i]是大于N的。
by la_un_ty @ 2019-08-07 16:32:24
查询和插入时均应为a[i]的位置。
by 溪水瑶 @ 2019-08-07 17:34:02
@我不是人造革 那该怎么改呢