➤ Problem Link : 1198A. MP3
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,s; cin>>n>>s; ll arr[n+1]; for(ll i=1;i<=n;i++) cin>>arr[i]; sort(arr+1,arr+n+1); ll k; ll low=0,high=n,mid; double val=(8*(double)s)/n; while(low<high) { mid=low+(high-low+1)/2; double d = log(mid)/log(2); if(ceil(d)<=val) low=mid; else high=mid-1; } k=high; // cout<<k<<endl; ll i=1,j=1; ll diff=1; ll ans=n; while(i<=n) { while(j<n) { if(j<n && arr[j+1]==arr[j]) j++; if(j<n && arr[j+1]!=arr[j]) { if(diff<k) { diff++; j++; } else break; } } ans=min(ans,i-1 + n-j); while(i<n && arr[i]==arr[i+1]) i++; diff--; i++; } cout<<ans; }
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!!