题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6318
#define N 100005
#include <bits/stdc++.h>
using namespace std;
int c[N];
int n;
int lowbit(int i)
{
return i&(-i);
}
int insert(int i,int x)
{
while(i<=n){
c[i]+=x;
i+=lowbit(i);
}
return 0;
}
int getsum(int i)
{
int sum=0;
while(i>0){
sum+=c[i];
i-=lowbit(i);
}
return sum;
}
void output()
{
for(int i=1;i<=n;i++) cout<<c[i]<<" ";
cout<<endl;
}
struct node{
int v;
int id;
bool operator <(const node &b)const{
if(v==b.v)
return id<b.id;
else return v<b.v;
}
};
node a[N];
int main()
{
int x,y;
while(~scanf("%d %d %d",&n,&x,&y)){
long long ans=0;
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++){
scanf("%d",&a[i].v);
a[i].id=i;
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
insert(a[i].id,1);
ans+=i-getsum(a[i].id);//统计当前序列中大于a的元素的个数
}
cout<<ans*min(x,y)<<endl;
}
return 0;
}