➤ Problem Link : 1111C. Creative Snap
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int n,k,a,b; map<ll,ll> mp; ll minPower(ll arr[],ll i,ll j) { if(i==j) { auto it = mp.find(i); if(it==mp.end()) return a; else { ll t=it->second; it--; t-=it->second; return b*(t); } } auto rt = mp.upper_bound(j); rt--; auto lt = mp.lower_bound(i); lt--; ll val = rt->second - lt->second; if(val==0) return a; ll first = minPower(arr,i,(i+j)/2)+minPower(arr,(i+j)/2 + 1,j); ll second = b*val*(j-i+1); return min(first,second); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>k>>a>>b; ll arr[k]; mp.clear(); mp[0]=0; for(int i=0;i<k;i++) { cin>>arr[i]; mp[arr[i]]++; } auto temp=mp.begin(); auto it = mp.begin(); it++; for(;it!=mp.end();it++) { it->second+=temp->second; temp++; } cout<<minPower(arr,1,pow(2,n)); }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!