n是1e9的数据范围,需要logn的复杂度,分治满足要求
#define int ll
int n,k,a,b;
vector<int>pos;
ll dfs(int l,int r)
{
//如果这一段没有英雄
int num=upper_bound(all(pos),r) - lower_bound(all(pos),l);//这一段的英雄数量
if(num==0) return a;
ll ans=b*num*(r-l+1);
int mid=(l+r)>>1;
if(r-l+1>1) ans=min(ans,dfs(l,mid)+dfs(mid+1,r));
return ans;
}
void solve()
{
cin>>n>>k>>a>>b;
rpp(i,k)
{
int x;cin>>x;
pos.push_back(x);
}
sort(all(pos));
cout<<dfs(1,1<<n)<<endl;
}